Verification d'identifiant php/sql

Résolu/Fermé
tcent Messages postés 380 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 18 mai 2017 - 12 avril 2010 à 12:09
tcent Messages postés 380 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 18 mai 2017 - 12 avril 2010 à 15:46
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 jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
12 avril 2010 à 15:12
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 dimanche 30 novembre 2008 Statut Membre Dernière intervention 18 mai 2017 55
12 avril 2010 à 14:25
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 vendredi 11 juillet 2008 Statut Membre Dernière intervention 7 juillet 2010 11
12 avril 2010 à 14:41
Sruvol comme ça vite fait, c'est effectivement des "==" et pas des "=" dans le if ;)
0
tcent Messages postés 380 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 18 mai 2017 55
12 avril 2010 à 15:46
Ca marche!!!!!!!!!!!!!!!

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

( merci a toi aussi absinthe)

1000merci :):):):)
0