Problème dans un script de connexion en PHP/MySQL

Résolu
Bonjour,

Voilà les amis, j'ai un petit soucie dans un script de connexion.

SELECT valid FROM user WHERE login = 'moi@me.com' AND mdp = 'groscanardvert';

Voici ma requete. Lorsque je la rentre dans phpmyadmin, il me retourne que valid = 0 (jusque là je comprend).

Voici mon script de connexion:

<?php

session_start();

include('connect.php');

$MAIL=$_POST['user'];
$MDP=$_POST['pwd'];

//Verification Champs de Saisie
if(($MAIL=="")||($MDP=="")||(($MAIL=="")&&($MDP==""))){

header('location: index.html');

}else{

//Encodage MD5
$mdp=md5($MDP);

//Verification User
$user= 0; //l'utilisateur n'est pas connecté
$req1="SELECT valid FROM user WHERE login = '$MAIL' AND mdp = '$mdp';";
//print($req1);
$info1=mysql_query($req1);
$all=mysql_fetch_row($info1);

if($all[0] > 0) $user=1;
if($user=1){

$_SESSION['user']=$MAIL;

header('location: membre.php');

}else{

header('location: index.html');

}

}

?>

Vous êtes d'accord si je vous dis que logiquement, si valid = 0, je suis pas censé pouvoir me connecter?

Je vous remercie par avance de vos réponses et conseils.

Cordialement,

Moi. (un peu d'humour :D)

5 réponses

  1. Bonjour
    Ce test :
    if($user=1){ 
    est toujours vrai car ce n'est pas une comparaison. Il fallait écrire :
    if($user==1){ 


    D'autre part (mais ça n'empêche pas le fonctionnement) ton test
    if(($MAIL=="")||($MDP=="")||(($MAIL=="")&&($MDP==""))){
    est farfelu, car le cas (($MAIL=="")&&($MDP=="")) est déjà inclus dans les deux précédents : pas besoin de le rappeler, il suffisait d'écrire
    if( $MAIL=="" || $MDP==""){
    1. Je te remercie le père :)
    2. Salut le père, mon script ne marche plus, il ne redirige plus vers membre.php même lorsque la condition est vrai
  2. // Récupération du champs
    $rech=$_POST['rech'];

    //Admin?
    $admin=0; //ce n'est pas un admin
    $r="SELECT valid FROM user WHERE login ='".$_SESSION['user']."';";
    $res=mysql_query($r);
    $val=mysql_fetch_row($res);
    if($val[0] == 100) $admin=1;

    // Requête d'affichage liste
    $q="SELECT IDUser, nom, prenom, lienphoto, valid FROM user WHERE nom like '".$rech."%' OR prenom like '".$rech."%';";
    $info=mysql_query($q);
    while($list=mysql_fetch_row($info)){
    echo "<a href='affichefiche.php?id=".$list[0]."'><p><img src='$list[3]' width='60' height='60' alt='' />".$list[2]." ".$list[1]."</a></p>";
    if($admin=1){
    echo"<a href=''>Supprimer</a> <a href=''>Modifier</a>";
    }
    echo "<br />";

    }
    1. Peux-tu donner le script tel qu'il est maintenant ?

      Par ailleurs, l'instruction if($all[0] > 0) va provoquer une erreur si on ne donne pas un login et un mot de passe corrects. La requête rendra un résultat vide, et le mysql_fetch_row rendra false et non pas un tableau, donc $all[0] ne sera pas défini.
      1. <?php

        session_start();

        include('connect.php');

        $MAIL=$_POST['user'];
        $MDP=$_POST['pwd'];

        //Verification Champs de Saisie
        if(($MAIL=="")||($MDP=="")){

        header('location: index.html');

        }else{

        //Encodage MD5
        $mdp=md5($MDP);

        //Verification User
        $user= 0; //l'utilisateur n'est pas connecté
        $req1="SELECT valid FROM user WHERE login = '$MAIL' AND mdp = '$mdp';";
        //print($req1);
        $info1=mysql_query($req1);
        $all=mysql_fetch_row($info1);

        if($all[0] > 0) $user==1;

        //if($user==1){

        // $_SESSION['user']=$MAIL;

        //header('location: membre.php');

        //}else{

        //header('location: index.html');

        //}

        }

        ?>

        le voici
        1. C'est normal qu'il n'y ait pas de redirection, tu as mis les lignes correspondantes en commentaire !

          À part ça, je ne vois pas d'erreur évidente. Pour voir s'il n'y a pas un problème du côté de mysql, il faut lui demander d'afficher les erreurs :
          $info1=mysql_query($req1) or die (mysql_error()); 
          $all=mysql_fetch_row($info1) or die (mysql_error());