Aide pour un systéme de connexion en PHP

Résolu
Utilisateur anonyme - 19 avril 2018 à 23:14
 Utilisateur anonyme - 20 avril 2018 à 22:07
Bonjour, je suis débutant en php. J'ai besoin de vous pour améliorer un code en php. Voilà, je m'explique, je voudrais ajoutait à ce code que qund on s'inscrit, en plus de du registerKey, user et password je voudrais mail(Type : varchar) et mailvalue(Type : int). Quand on va s'inscrire, je veux qu'on entre son adresse mail(mail) et que sa le sauvegarde dans la table User dans la base de donnée(fonction register). Et mailvalue est juste un type int que je veux aussi enregistrer dans la table User de base à 0 quand on s'inscrit donc quand on utilise l'action register. Ne vous préoccuper pas de la fonction connect , rc4  mais préoccupé vous de la fonction register. 

Si vous n'avez rien compris site le moi est je vous expliquerait mieux.

Svp aidez moi !

Voici le code :

 

<?php

$sessionID = $_GET["sessionID"];
$actionget = $_GET["action"];
$user = $_GET["user"];
$password = $_GET["password"];
$registerkey = $_GET["registerkey"];

if (empty($sessionID)) die ("ERROR:INVALID_SESSION_ID");

$action = new action;
if ($actionget == "connect")
 $response =  $action->connect($user, $password);
elseif ($actionget == "register")
    $response = $action->register($user, $password, $registerkey);
else
 $response = "ERROR:NO_ACTION";

echo rc4($sessionID, $response);

class action
{
 public $bdd;
 
 public function action()
 {
  try { $this->bdd = new PDO('mysql:host=mysql.hostinger.fr;dbname=u6****95_base', 'u67****_admin', '******'); }
  catch (Exception $ex) { die('ERROR:ERROR_BDD_CONNECTION'); }
 }
 
 public function connect($user, $pass)
 {
  if (!$this->userExist($user)) return ("ERROR:USER_NOT_FOUND");
  
  $data = $this->executeQuery("SELECT * FROM Users WHERE User = ?;", array($user));
  if ($data['Password'] != $pass)
   return ("ERROR:INCORRECT_PASSWORD");
  elseif ($data['Banned'] == 1)
      return ("ERROR:USER_BANNED");
  Else
   Return ("OK:") . $data['Premium'];
 }
 
 public function register($user, $pass, $registerkey)
 {
  $data = $this->executeQuery("SELECT * FROM RegisterKeys WHERE RegisterKey = ?;", array($registerkey));
  if (empty($data['RegisterKey'])) return ("ERROR:INVALID_KEY");
  if (!empty($data['User'])) return ("ERROR:KEY_ALREADY_USED");
  if ($this->userExist($user)) return ("ERROR:USER_ALREADY_EXIST");
  
  $this->executeQuery("INSERT INTO Users VALUES ('', ?, ?, '0', '0', ?);", array($user, $pass, getTime()));
  $this->executeQuery("UPDATE RegisterKeys SET User = ? WHERE  RegisterKey = ?;", array($user, $registerkey));
  
  return ("OK:REGISTERED");
 }
 
 private function userExist($user)
 {
  $data = $this->executeQuery("SELECT * FROM Users WHERE User = ?;", array($user));
  if (empty($data['User']))
   return (false);
  Else
   return (true);
 }
 
 private function executeQuery($query, $args, $fetch = true)
 {
  $response = $this->bdd->prepare($query);
  $response->execute($args);
  if ($fetch)
  {
   $data = $response->fetch();
   $response->closeCursor();
   return ($data);
  }
  else
   Return ($response);
 }
}

function rc4($key, $str) {
$s = array();
for ($i = 0; $i < 256; $i++) {
$s[$i] = $i;
}

$j = 0;

for ($i = 0; $i < 256; $i++) {
$j = ($j + $s[$i] + ord($key[$i % strlen($key)])) % 256;
$x = $s[$i];
$s[$i] = $s[$j];
$s[$j] = $x;
}

$i = 0;
$j = 0;
$res = '';

for ($y = 0; $y < strlen($str); $y++) {
$i = ($i + 1) % 256;
$j = ($j + $s[$i]) % 256;
$x = $s[$i];
$s[$i] = $s[$j];
$s[$j] = $x;
$res .= $str[$y] ^ chr($s[($s[$i] + $s[$j]) % 256]);
}

return $res;
}

function getTime()
{
 date_default_timezone_get('Europe/Paris');
 return date("Y-m-d h:i:s");
}

?>

1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
20 avril 2018 à 06:50
Bonjour
Oui..et ?
Qu'as tu essayé ? Sur Quoi bloques tu ?
0
Utilisateur anonyme
20 avril 2018 à 10:44
Bonjour jordane45,

J'ai essayé beaucoup de chose mais je n'y arriver pas du tout.

Je bloque sur comment rajouter dans la fonction register(quand l'utilisateur s'inscrit), l'addres mail, sa ve dire que quand l'utilisateur s'inscrit il dois mettre son pseudo(user dans le code) et mot de passe(password dans le code) et je veut rajouter qu'il dois mettre aussi son adresse mail qui va étre enregistrer dans la base de donnée.

Code fonction register :
public function register($user, $pass, $registerkey)

 {

  $data = $this->executeQuery("SELECT * FROM RegisterKeys WHERE RegisterKey = ?;", array($registerkey));

  if (empty($data['RegisterKey'])) return ("ERROR:INVALID_KEY");

  if (!empty($data['User'])) return ("ERROR:KEY_ALREADY_USED");

  if ($this->userExist($user)) return ("ERROR:USER_ALREADY_EXIST");

   

  $this->executeQuery("INSERT INTO Users VALUES ('', ?, ?, '0', '0', ?);", array($user, $pass, getTime()));

  $this->executeQuery("UPDATE RegisterKeys SET User = ? WHERE  RegisterKey = ?;", array($user, $registerkey));

   

  return ("OK:REGISTERED");

 }



Tous le code :
<?php

$sessionID = $_GET["sessionID"];
$actionget = $_GET["action"];
$user = $_GET["user"];
$password = $_GET["password"];
$registerkey = $_GET["registerkey"];

if (empty($sessionID)) die ("ERROR:INVALID_SESSION_ID");

$action = new action;
if ($actionget == "connect")
 $response =  $action->connect($user, $password);
elseif ($actionget == "register")
    $response = $action->register($user, $password, $registerkey);
else
 $response = "ERROR:NO_ACTION";

echo rc4($sessionID, $response);

class action
{
 public $bdd;
 
 public function action()
 {
  try { $this->bdd = new PDO('mysql:host=mysql.hostinger.fr;dbname=u6*****695_base', 'u6*****95_admin', '*******8'); }
  catch (Exception $ex) { die('ERROR:ERROR_BDD_CONNECTION'); }
 }
 
 public function connect($user, $pass)
 {
  if (!$this->userExist($user)) return ("ERROR:USER_NOT_FOUND");
  
  $data = $this->executeQuery("SELECT * FROM Users WHERE User = ?;", array($user));
  if ($data['Password'] != $pass)
   return ("ERROR:INCORRECT_PASSWORD");
  elseif ($data['Banned'] == 1)
      return ("ERROR:USER_BANNED");
  Else
   Return ("OK:") . $data['Premium'];
 }
 
 public function register($user, $pass, $registerkey)
 {
  $data = $this->executeQuery("SELECT * FROM RegisterKeys WHERE RegisterKey = ?;", array($registerkey));
  if (empty($data['RegisterKey'])) return ("ERROR:INVALID_KEY");
  if (!empty($data['User'])) return ("ERROR:KEY_ALREADY_USED");
  if ($this->userExist($user)) return ("ERROR:USER_ALREADY_EXIST");
  
  $this->executeQuery("INSERT INTO Users VALUES ('', ?, ?, '0', '0', ?);", array($user, $pass, getTime()));
  $this->executeQuery("UPDATE RegisterKeys SET User = ? WHERE  RegisterKey = ?;", array($user, $registerkey));
  
  return ("OK:REGISTERED");
 }
 
 private function userExist($user)
 {
  $data = $this->executeQuery("SELECT * FROM Users WHERE User = ?;", array($user));
  if (empty($data['User']))
   return (false);
  Else
   return (true);
 }
 
 private function executeQuery($query, $args, $fetch = true)
 {
  $response = $this->bdd->prepare($query);
  $response->execute($args);
  if ($fetch)
  {
   $data = $response->fetch();
   $response->closeCursor();
   return ($data);
  }
  else
   Return ($response);
 }
}

function rc4($key, $str) {
$s = array();
for ($i = 0; $i < 256; $i++) {
$s[$i] = $i;
}

$j = 0;

for ($i = 0; $i < 256; $i++) {
$j = ($j + $s[$i] + ord($key[$i % strlen($key)])) % 256;
$x = $s[$i];
$s[$i] = $s[$j];
$s[$j] = $x;
}

$i = 0;
$j = 0;
$res = '';

for ($y = 0; $y < strlen($str); $y++) {
$i = ($i + 1) % 256;
$j = ($j + $s[$i]) % 256;
$x = $s[$i];
$s[$i] = $s[$j];
$s[$j] = $x;
$res .= $str[$y] ^ chr($s[($s[$i] + $s[$j]) % 256]);
}

return $res;
}

function getTime()
{
 date_default_timezone_get('Europe/Paris');
 return date("Y-m-d h:i:s");
}

?>


0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
20 avril 2018 à 11:31
Il faut :
1 - Récupérer les variables venant de ton formulaire
2 - Les passer en paramètre de la fonction lors de son appel
3 - Les récupérer dans la fonction et les ajouter dans la requête d'insertion

NB: Pense à mettre tes class dans des fichiers à part au lieu de les mettre directement dans la même page....
Ca sera plus propre et au moins tu pourras les réutiliser ailleurs si besoin.
0
Utilisateur anonyme
20 avril 2018 à 22:07
Merci jordne45, j'ai réussi !!
0
Rejoignez-nous