Comparaison variables avec BDD en php

Fermé
Mex0s Messages postés 60 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 2 septembre 2014 - 12 janv. 2010 à 23:23
Mex0s Messages postés 60 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 2 septembre 2014 - 13 janv. 2010 à 16:47
Bonjour,

j'ai créé un formulaire d'inscription sur un site en html/php qui envoie les données dans une table mysql, mais j'aimerai afficher une erreur lorsque le login choisi dans le formulaire est déja utilisé.

J'ai aussi besoin de comparer les valeurs $_POST['login'] et $_POST['password'] avec les login/mdp contenus dans la bdd au moment de la connexion apres s'être inscris.

J'espere être assez clair et que vous pourrez m'aider.
D'avance merci :).

Mex0s
A voir également:

9 réponses

$nombre = mysql_query($sql);
if ($nombre != 0 )

utiliser COUNT est une bonne idée, mais tu recommences la même erreur que MeXos : tu oublies que le $nombre que tu obtiens est une ressource, pas un nombre. Donc la comparaison avec 0 est mal venue. Ça ne va pas marcher.

$sql = "SELECT COUNT(*) as nombre FROM membres WHERE 'login' = $login";
$reponse = mysql_query($sql);
$ligne = mysql_fetch_array($reponse);
if ($ligne['nombre'] != 0 )
{
         echo "il y a déjà un compte avec ce login";
}
else
{
        //enregistrement du membre
}
3
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
12 janv. 2010 à 23:49
Il suffit de rechercher $_POST['login'] et l'autre dans ta bd, si ça retourne au moins 1 enregistrement, alors ce login est déjà utilisé.
1
Lord Farquaad Messages postés 5 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010
13 janv. 2010 à 00:10
Salut,

cette page peut peut-être t'intéresser
http://www.chezneg.fr/leblog/chezneg-leblog.php?id_art=126
0
Mex0s Messages postés 60 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 2 septembre 2014
13 janv. 2010 à 01:30
Merci pour vos réponses.
Par contre je n'y connais absolument rien en jquery donc ton lien ne m'aide pas trop malheuresement :x.

Une fois inscrite, une personne doit pouvoir se connecter a partir de ce formulaire html:

<form method="post" action="secure2.php">
Login: <input type="text" name="login"><br />
Mot de Pass:<input type="password" name="pass"><br />
<center><input type="submit" value="Envoyer"></center>

J'ai suivi le conseil de UgglyBoy:
J'essaie de récupérer la liste des logins enregistrés dans la base de données et de les comparer au login entré.
Si ce login existe je pourrai comparer les mots de pass correspondant.

secure2.php:

$login=$_POST['login'];
$pass=$_POST['pass'];

$reponse= mysql_query("SELECT * FROM membres WHERE 'login'='$login'"); //Je cherche le login dans la BDD
$donnees= mysql_fetch_array($reponse);

if($donnees='') //Si le login n'est pas trouvé dans la BDD on redirige
{
header('Location: index.php?page=connexion&secure=1');
}
else //Si le login existe dans la BDD, on va pouvoir comparer les mots de pass...
{
//Vérifier le mot de pass
}


Encore une fois j'espere être assez clair et que vous pourrez m'aider.
D'avance merci :).
0

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

Posez votre question
Lord Farquaad Messages postés 5 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010
13 janv. 2010 à 10:12
Salut,

Je ne sais pas si ce code fonctionne mais pour ta variable $reponse je mettrai plutôt
$reponse= mysql_query("SELECT * FROM membres WHERE login='$login';");


Sinon je ne vois pas l'utilité de ton else ! A partir du moment où tous les login sont différents il peut y avoir des mots de passe identiques !!

Sinon le reste semble bon ! Tu devrais aussi créer une session avec les class et tout..

Bref j'espère t'avoir aidé !
0
Bonjour

if($donnees='') //Si le login n'est pas trouvé dans la BDD on redirige
Ce test est tout faux.
D'abord, ce n'est pas un test, il faudrait == et non pas =
ensuite, $donnees est une resource et pas une chaine, inutile de le comparer avec une autre chaine...
Il faut compter le nombre de réponses à l'aide de mysql_num_rows()
if(mysql_num_rows($donnees)>0) ...
0
Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
13 janv. 2010 à 11:07
$sql = "SELECT COUNT(*) FROM membres WHERE 'login' = $login";
$nombre = mysql_query($sql);
if ($nombre != 0 )
{
         echo "il y a déjà un compte avec ce login";
}
else
{
        //enregistrement du membre
}

En étant puriste, c'est mieux que d'extraire les lignes avec le même login
0
Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
13 janv. 2010 à 12:30
Méa Culpa, j'ai tendance a travailler directement avec mes requêtes depuis MySQL Query Browser donc... sans Php derière.. Merci bien pour ce rectif. =)
0
Mex0s Messages postés 60 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 2 septembre 2014
13 janv. 2010 à 16:47
Merci à tous pour toutes ces réponses ma foi fort interessentes.
Ca m'fait pas mal de trucs à réctifier, au boulot.

Merci encore, j'vous tiens au courant :p.
0