Problème de login

Résolu
Signaler
Messages postés
15
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 juin 2007
-
Messages postés
15
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 juin 2007
-
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 :

<td>
                      <form method="post" action="verifLogin.php">
                      <tr>
                      <td width="1">Login</td>
                      <td width="10"></td>
                      </tr>
                      <tr>
                      <td width="1">Mot de passe</td>
                      <td width="10"></td>
                      </tr>
                      <tr>
                      <td colspan="2">
                     
                      </td>
                      </tr>
                      </form>
</td>

Le message d'erreur étant 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 ^^)

9 réponses

Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
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)
Messages postés
15
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 juin 2007

merci pour le tuyau, et j'ai fouiller le site et je trouve pas son soit disant doc :/ donc je crois que je vais chercher un autre moyen ^^
Messages postés
15
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 juin 2007

Re, j'ai trouvé une autre solution mais la aussi sa ne marche pas :/ je vais finir par croire que je suis maudit

Alors voici le code lanceant le login :

<td><form name="login" method="post" action="validate.php">,
Login

Pass

,
</form>
</td>

On arrive donc sur la page de vérification :

<?php
 session_start();
 
 //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 :

<?include("verifLogin.php");?>
<?Session_start();?>

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
Messages postés
15
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 juin 2007

up!
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

$_SESSION'user_name' = $user_name;

C'est plutôt :
$_SESSION['user_name'] = $user_name;

Sinon, dans le formulaire, le login c'est Login (avec une majuscule)



Si ensuite, tu le changes et que tu mets user_name, ça peut plus marcher.

Ensuite, dans le code php, il faut utiliser $Login (avec une majuscule) et non pas $login.

Pareil pour le mot de passe :
if ($password == $data['Mdp']) {
$loginOK = true;
}

Or dans le formulaire, c'est Mdp :


Y'a rien de cohérent dans ton code, ça peut pas marcher...
Messages postés
15
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 juin 2007

olalala en effet, j'ai fait plein de faute d'inatention :/ désolé et merci pour le coup de main. ++
Messages postés
15
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 juin 2007

je vien de modif le code et il a marché mais j'ai voulu rajouter quelque chose et sa plante :/

je voudrais qu'après verif du login il m'emmene sur une autre page, cela est-il possible?

j'ai essayé quelque chose mais je ne sais plus comment faire pour lancer un lien, j'ai essayé ceci mais je ne suis pas sur des balises :/

$_SESSION['Login'] = $Login;
 echo 'a href = "index3.php";' }

ps : si vous connaissez un site expliquant les balises if etc sa m'arrangerait ;)
Messages postés
15
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 juin 2007

merci beaucoup ;)