Problème de login

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

<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

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 18
5 juin 2007 à 15:20
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 18
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)
0
Masterchiefer Messages postés 15 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 juin 2007
2 juin 2007 à 09:47
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 ^^
0
Masterchiefer Messages postés 15 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 juin 2007
2 juin 2007 à 10:42
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Masterchiefer Messages postés 15 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 juin 2007
5 juin 2007 à 14:38
up!
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 18
5 juin 2007 à 15:01
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...
0
Masterchiefer Messages postés 15 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 juin 2007
5 juin 2007 à 15:12
olalala en effet, j'ai fait plein de faute d'inatention :/ désolé et merci pour le coup de main. ++
0
Masterchiefer Messages postés 15 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 juin 2007
5 juin 2007 à 15:18
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 ;)
0
Masterchiefer Messages postés 15 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 juin 2007
5 juin 2007 à 15:21
merci beaucoup ;)
0
Rejoignez-nous