Masterchiefer
Messages postés15Date d'inscriptionjeudi 31 mai 2007StatutMembreDernière intervention 5 juin 2007
-
1 juin 2007 à 17:07
Masterchiefer
Messages postés15Date d'inscriptionjeudi 31 mai 2007StatutMembreDernière intervention 5 juin 2007
-
5 juin 2007 à 15:21
Bonjour tout le monde, je suis en train de créer un système de login à partir d'un code déjà écrit. J'ai fait les modifs nécessaires mais j'ai une erreur...
Voici le code provoquant l'erreur :
<?php
// On démarre la session
session_start();
$loginOK = false; // cf Astuce
// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['Login'])) && (!empty($_POST['Mdp'])) ) {
extract($_POST); // je vous renvoie à la doc de cette fonction
// On va chercher le mot de passe afférent à ce login
$sql = "SELECT Login, Mdp FROM Admin WHERE Login='".addslashes($login)."'";
$req = mysql_query($sql) or die('Erreur SQL :
'.$sql);
// On vérifie que l'utilisateur existe bien
if (mysql_num_rows($req) > 0) {
$data = mysql_fetch_assoc($req);
// On vérifie que son mot de passe est correct
if ($password == $data['Mdp']) {
$loginOK = true;
}
}
}
// Si le login a été validé on met les données en sessions
if ($loginOK) {
echo '';
}
else {
echo 'Une erreur est survenue, veuillez réessayer !';
}
?>
Le code appellant cette procédure est le suivant :
Erreur SQL :
SELECT Login, Mdp FROM Admin WHERE Login = ''
J'ai vérifié la ligne (en couleur dans le précèdent code) et je n'ai pas vu d'erreur une idée (si vous pouviez par la meme occasion m'expliquez d'ou vient mon erreur, je cherche a progresser ^^)
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 1 juin 2007 à 18:24
Salut,
extract($_POST); // je vous renvoie à la doc de cette fonction
L'auteur du code te renvoie à la doc de cette fonction, mais pas nous.
Donc...
En premier lieu, le message d'erreur de MySQL n'est pas très explicite, mais je ne pense pas que ce soit la faute à MySQL.
Ensuite, il semble que la variable $login soit vide, mais sans le code de la fonction extract, pas facile à dire.
Pour terminer, addslashes ne protège absolument pas des injections SQL, il est préférable d'utiliser mysql_real_escape_string() (Cf la doc php de cette fonction)
//Connection à mysql et sélection de la base de données
$connection = mysql_connect("***") or die(mysql_error());
mysql_select_db("*", $connection) or die(mysql_error());
//Préparation de la requête
$query = "SELECT * FROM Admin
WHERE Login=".$_POST['user_name']." AND Mdp=".$_POST['password'] ."";
//exécution de la requête et récupération du nombre de résultats
$result = mysql_query($query, $connection);
$affected_rows = mysql_num_rows($result);
//S'il y a exactement un résultat, l'utilisateur est authentifié, sinon, on l'empêche d'entrer
if($affected_rows == 1) {
print 'Vous êtes authentifié';
//On ajoute l'utilisateur aux variables de session
$_SESSION'user_name' = $user_name;
//a href = "index3.php" (je ne sais pas si ce lien est valable ici)
; }
else {
print 'Accès refusé';
}
?>
Puis au début de ma page index3.php je place les variables suivantes :
Tout ceci pour arriver à sa ===> Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /homepages/6/d121071583/htdocs/pc-planet.fr/test/validate.php on line 21
Alors, vous voyez ce qui cloche mon niveau n'étant pas très avancé, je ne sais pas très bien maitrisé les sessions donc si j'ai fait une erreur j'aimerais avoir une petite explication svp, merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?