Verification d'identifiant php/sql

Résolu
tcent Messages postés 380 Date d'inscription   Statut Membre Dernière intervention   -  
tcent Messages postés 380 Date d'inscription   Statut Membre Dernière intervention   -
bonjour,

j'ai une bdd loggin (grosse faute dsl) qui contient une table identification
et 3 champs: id auto incrementé, identifiant, et mdp

j'ai un fichier indexl ou j'ai mis:

<form method="get" action="script.php" name="form1" >
<input type="text" name="Pseudo" id="Pseudo" maxlength="15" value="Pseudo..." title="Pseudo" onfocus="this.value=''; this.onfocus=null;"/>
<br />
<input type="text" name="Pass" id="pass" maxlength="15" value="Mot de passe..." title="Pass" onfocus="this.value=''; this.onfocus=null;"/>
<br /> ( le mot de passe non crypté n'est pas grave )
<center><input name="SEND" type="submit" value="Connection"/></center>
</form>

puis un fichier script, j'aimerais qu'il verifie l'identifiant
pour cela j'ai fais

<?

$db_host="127.0.0.1";
$db_user="root";
$db_pass="mot de passe";
$database="loggin";


$link=mysql_connect($db_host,$db_user,$db_pass) or die("Impossible de se connecter à la base de donnée.");
mysql_select_db($database) or die("Impossible de selectionner la base de donnée. La base de donnée n'existe pas...");
session_start();

$verifpseudo=mysql_query("SELECT identifiant FROM identification WHERE identifiant='".$_POST['Pseudo']."'")or die(mysql_error());
$verifmdp=mysql_query("SELECT mdp FROM identification WHERE mdp='".$_POST['Pass']."'")or die(mysql_error());


$result1=mysql_fetch_row($verifpseudo);
$result2=mysql_fetch_row($verifmdp);



if( $result1 = $_POST['Pseudo'] && $result2 = $_POST['Pass'])
{
echo "vous n'avez pas de compte";
}
else
{
echo "oui il y a un compte";
}


?>

sauf que cela renvois toujours oui il y a n compte,
j'ai enuite esseyé de mettre == ( habitué au c++ )
cela renvois toujours vous n'avez pas de compte

pouvez vous m'aidez a corriger mon code svp

A voir également:

4 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Premier point, il y a une erreur de conception : tel que codé, tu vérifies qu'un compte portant ce nom existe, et qu'un compte ayant ce mot de passe existe. Mais rien n'indique qu'il s'agit des mêmes comptes.

Ce que je te propose, c'est plutôt une requête de ce genre :
SELECT count(*) FROM identification WHERE mdp = $mdp AND identifiant = $identifiant

Deuxième point, pour une comparaison en php on utilise bien le « == ».

Troisième point, mysql_fetch_row renvoie un tableau. Donc quand tu écris $result1 == $_POST['Pseudo'], tu compares le tableau à la valeur POST, et non le résultat de la requête, qui serait $result1[0].

Quatrième point, ton code est ouvert aux attaques par injection sql, car tu envoies directement un champ saisi par l'utilisateur dans ta requête. Pour s'en prémunir, il suffit d'échapper les quotes.

Au final, cela donne un code qui ressemble à ceci :
<?

$db_host="127.0.0.1";
$db_user="root";
$db_pass="mot de passe";
$database="loggin";

$link=mysql_connect($db_host,$db_user,$db_pass) or die("Impossible de se connecter à la base de donnée.");
mysql_select_db($database) or die("Impossible de selectionner la base de donnée. La base de donnée n'existe pas...");
session_start();

$mdp = mysql_real_escape_string($_POST['Pass']);
$identifiant= mysql_real_escape_string($_POST['Pseudo']);

$verification=mysql_query("SELECT count(*) FROM identification WHERE mdp = '$mdp' AND identifiant = '$identifiant'") or die(mysql_error());

$resultat=mysql_fetch_row($verification);

if( $resultat[0] == 0)
{
    echo "vous n'avez pas de compte";
}
else
{
    echo "oui il y a un compte";
}

?> 


Voilà !

Xavier
1
tcent Messages postés 380 Date d'inscription   Statut Membre Dernière intervention   55
 
Personne n'a d'idée?
il y en a pourtant dans tous les sites :(
aidez moi svp
0
Absinthe06 Messages postés 102 Date d'inscription   Statut Membre Dernière intervention   11
 
Sruvol comme ça vite fait, c'est effectivement des "==" et pas des "=" dans le if ;)
0
tcent Messages postés 380 Date d'inscription   Statut Membre Dernière intervention   55
 
Ca marche!!!!!!!!!!!!!!!

merciiiii Xavier tu es trop fort!!!!!!!!!!

( merci a toi aussi absinthe)

1000merci :):):):)
0