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");
}
?>
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");
}
?>
jordane45
Messages postés37506Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 mai 2023341 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.
20 avril 2018 à 10:44
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 :
Tous le code :
20 avril 2018 à 11:31
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.
20 avril 2018 à 22:07