Page 1 sur 2
Vérifier l'existence d'un utilisateur
Posté : 05 août 2005, 01:58
par Flo86
Bonjour,
Je souhaiterais créer une fonction qui vérifie si invité qui écrit un article sur mon site ne "pique" pas le nom d'un membre déjà inscrit.
J'ai donc créé ce petit bout de code :
<?
$sql = "SELECT login FROM ma_base";
$result = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$row = mysql_fetch_array($result);
if($row['login']==$_POST['pseudo']) {
echo "NON ! ce nom d'utilisateur existe déjà" }
?>
Mais ça ne marche pas...
Comment faire ?
Re: Vérifier l'existence d'un utilisateur
Posté : 05 août 2005, 06:15
par JazzFinder
Salut. D'abord, clarifions quelques points.
1- Si "login" serait le nom du nouveau utilisateur, dans ce cas,
$_POST['pseudo'] provient d'ou?
2- Est-ce que "login" est un champs qui existe réellement dans ta base (parce que tu l'inclus dans ta requête)? Et pseudo?
3- Pourquoi tu utilises mysql_fetch_array si ton objectif est de tester l'occurence d'un seul champs et d'une seule ligne dans ta base? Un mysql_num_rows aurait suffi, non?
4- Et finalement, d'après la logique que je perçois de ton bout de code, qu'arrive-t-il si un "vrai' membre se connecte, il risque d'être "refusé" même s'il a le bon login?
Bref, donnes-nous un petit plus de précisions sur ce que tu souhaites faire, et on pourrait mieux t'aider.
Posté : 05 août 2005, 07:45
par Cyrano
J'ajouterais que si tu veux éviter l'usurpation d'identité, un mot de passe serait utile en plus du pseudonyme.
Posté : 05 août 2005, 13:13
par Flo86
Re-bonjour, et merci pour votre aide, c'est vrai que mon premier message n'est pas vraiment clair.
Donc, en fait, j'ai un formulaire qui permet de publier des articles : les membres peuvent bien entendu poster, mais les non-membres aussi.
$_POST['pseudo'], c'est le pseudo avec lequel l'utilisateur envoie l'article... Dans ce cas, le membre n'est pas connecté en tant que membre (car sinon, une session est ouverte, et l'utilisateur n'a pas besoin d'entrer son pseudo...).
Sur la page de validation de l'article, j'aimerais vérifier que cet utilisateur qui n'est pas connecté, ne pose pas avec le pseudo d'un membre...
"login", c'est le nom du champ "ma_table" qui contient tous les membres du site,
J'aimerais donc vérifer que $_POST['pseudo'] soit différent de tous les "login" avant de pouvoir poursuivre la publication de l'article...
En espérant avoir été plus clair

Posté : 05 août 2005, 13:38
par NoNos
Une requete du genre
Ensuite tu compte le nombre de resultat, si il y en a 1 tu rejette sinon c'est ok
Posté : 05 août 2005, 13:57
par raptor
ne pas oublier les ' quand on verifie une égalité avec une chaine
Posté : 05 août 2005, 14:06
par NoNos
C'est vrai j'ai taper sa vite fait donc j'assume l'entière responsabilité de mon erreur
Posté : 05 août 2005, 14:26
par matt_m
ne pas oublier les ' quand on verifie une égalité avec une chaine
et aussi et surtout ne pas faire confiance a ce qui provient de l'utilisateur
si dans la requete
Code : Tout sélectionner
"SELECT login FROM ma_base WHERE login = '".$_POST['login']."'";
$_POST['login'] contient
alors ta requete devient:
Code : Tout sélectionner
SELECT login FROM ma_base WHERE login = 'admin' OR 1 IS NOT NULL;#'
ce qui te retournera le premier enregistrement qui sera dans 95 % des cas celui de l'admin...
verifiez toujours les données (provenant des utilisateurs)...
Posté : 05 août 2005, 14:32
par raptor
le bon vieux addslashes() ^^
Posté : 05 août 2005, 14:35
par Invité
mdr merci, les magic_quotes sont activés de toute façon (je suis en mutualisé)
Posté : 05 août 2005, 14:38
par raptor
Ca résoud le probleme d'une certaine manière

Posté : 05 août 2005, 14:48
par Flo86
J'ai donc essayé ça :
<?$sql = "SELECT login FROM ma_table WHERE name='".$_POST['login']."'";
$result = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$row = mysql_num_rows($result);
if($row['name']=="1")
{
echo "NON!";
exit;
}
?>
Mais ça ne marche pas... Pas d'erreur SQL, rien ! Et pourtant j'essaye avec un nom qui est dans la base...
(Je précise bien évidement que la connexion est ouverte ^^)[/code]
Posté : 05 août 2005, 14:52
par Invité
Désolé, à la 4ème ligne il fallait lire
if($row['login']=="1")
Posté : 05 août 2005, 15:03
par raptor
Posté : 05 août 2005, 15:07
par Cyrano
if($row['login'] == 1)
Enlève les guillemets autour du 1 sinon le nombre sera traité en chaine de caractère et la comparaison retournera FALSE.