Problème dans un script de connexion en PHP/MySQL [Résolu/Fermé]

Signaler
Messages postés
9
Date d'inscription
mardi 5 février 2013
Statut
Membre
Dernière intervention
11 juin 2013
-
 Utilisateur anonyme -
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


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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 61368 internautes nous ont dit merci ce mois-ci

Messages postés
9
Date d'inscription
mardi 5 février 2013
Statut
Membre
Dernière intervention
11 juin 2013

Je te remercie le père :)
Messages postés
9
Date d'inscription
mardi 5 février 2013
Statut
Membre
Dernière intervention
11 juin 2013

Salut le père, mon script ne marche plus, il ne redirige plus vers membre.php même lorsque la condition est vrai
Messages postés
9
Date d'inscription
mardi 5 février 2013
Statut
Membre
Dernière intervention
11 juin 2013

// 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 />";

}

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.
Messages postés
9
Date d'inscription
mardi 5 février 2013
Statut
Membre
Dernière intervention
11 juin 2013

<?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

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());