Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1934 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  comment faire pour vérifier qu'un parrain existe?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment faire pour vérifier qu'un parrain existe?

n°1313805
cvex
$CveX
Posté le 26-02-2006 à 17:12:35  profilanswer
 

Salut à tous :)
 
J'ai quelques difficultés à mettre en place une boucle qui permet de vérifier si un parrain existe lors d'une inscription.
 
elseif($_POST['parrain'] == "" )
 {
 header("location:inscription.php?erreur=parrain" );
 $requete_parrain = mysql_query("SELECT pseudo FROM utilisateur WHERE pseudo='".$_POST['parrain']."'" );
 while($parrain = mysql_fetch_array($requete_parrain))
 {
 if(empty($parrain['pseudo']))
 {
 header("location:inscription.php?erreur=parrain" );
 }
 }
 }
 
L'inscription se valide quand meme avec un parrain fictif
J'espère que l'on pourra m'aider
Si j'ai oublié de préciser quelque chose dite le moi :)


---------------
http://forum.hardware.fr/hardwaref [...] 1293-1.htm
mood
Publicité
Posté le 26-02-2006 à 17:12:35  profilanswer
 

n°1313829
omega2
Posté le 26-02-2006 à 18:16:33  profilanswer
 

Vu ta requette, un simple mysql_num_rows() suffira : http://fr.php.net/manual/fr/functi [...] m-rows.php
Si la valeur retourné par mysql_num_rows est égale à 0 , alors le parain n'existe pas et si c'est supérieur à 0 alors c'est qu'il existe.
 
En général, pour ce genre de vérification, on demande à la base de donnée de nous dire le nombre de ligne correspondant au critére de recherche ( select count(*) nb from ... ) et on regarde le contenu de la "colone" nomé "nb". C'est plus propre vu qu'on retourne la valeur utile. C'est peut être aussi plus rapide mais ca demande un peu plus de code.
 
 
PS : Avec le code que t'avais fait, tu ne passais jamais dans le while quand le parain n'existe pas vu que mysql ne te retournais aucune donnée et donc tu ne passais jamais par le "header" de redirection. De plus même si t'envoie un header de redirection au navigateur, le serveur continuera à exécuter le reste du code vu qu'il ne se préocupe pas du contenu des données envoyé au navigateur.

Message cité 1 fois
Message édité par omega2 le 26-02-2006 à 18:19:29
n°1313831
masklinn
í dag viðrar vel til loftárása
Posté le 26-02-2006 à 18:21:49  profilanswer
 

omega2 a écrit :

En général, pour ce genre de vérification, on demande à la base de donnée de nous dire le nombre de ligne correspondant au critére de recherche ( select count(*) nb from ... ) et on regarde le contenu de la "colone" nomé "nb". C'est plus propre vu qu'on retourne la valeur utile. C'est peut être aussi plus rapide mais ca demande un peu plus de code.


Ou bien alors on met le parrain en FK de l'utilisateur, on insère le tout (parrain compris) et l'insert se vautre si le parrain est invalide, problème rêglé :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1313834
omega2
Posté le 26-02-2006 à 18:25:17  profilanswer
 

masklinn > Certe, moi, je me suis limité aux solutions 100% PHP, mais c'est vrai qu'une "foreign key" (clé étrangére) dans la base de donnée est une autre solution et qu'elle est sans risque celle là.
Encore faut il que le parain soit obligatoire ce qui n'est pas forcément le cas même si dans le cas de "cvex" ca semble être le cas.

n°1313841
cvex
$CveX
Posté le 26-02-2006 à 18:47:36  profilanswer
 

Oui le parrain est obligatoire dans mon cas
 
elseif($_POST['parrain'] == "" )
 {
 header("location:inscription.php?erreur=parrain" );
 $test_parrain = mysql_num_rows(mysql_query("SELECT pseudo FROM utilisateur WHERE pseudo='".$_POST['parrain']."'" ));
 if(test_parrain == 0)
 {
 header("location:inscription.php?erreur=parrain" );
 }
 }


---------------
http://forum.hardware.fr/hardwaref [...] 1293-1.htm
n°1313850
masklinn
í dag viðrar vel til loftárása
Posté le 26-02-2006 à 19:00:40  profilanswer
 

au fait, tu as conscience que tu prépares une magnifique faille par SQL injection avec ta query?


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1313853
cvex
$CveX
Posté le 26-02-2006 à 19:14:04  profilanswer
 

a bon?
Et on compte faire comment pour la corriger?
J'y connais rien en faille php
 
Edit : J'ai regardé ce que ca donne et je ne trouve pas de faille dans ma requete étant donné que je n'utilise pas *
C'est dans le $_POST qui pose le prob?


Message édité par cvex le 26-02-2006 à 19:35:18

---------------
http://forum.hardware.fr/hardwaref [...] 1293-1.htm
n°1313869
masklinn
í dag viðrar vel til loftárása
Posté le 26-02-2006 à 19:51:12  profilanswer
 

demande toi ce qui se passe si le contenu de $_POST['parrain'] est un truc du genre:

Code :
  1. ' OR 1=1; drop table utilisateur; --


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1313873
cvex
$CveX
Posté le 26-02-2006 à 19:59:14  profilanswer
 

addslashes($_POST['parrain'])
 
C'est mieux?


---------------
http://forum.hardware.fr/hardwaref [...] 1293-1.htm
n°1313878
masklinn
í dag viðrar vel til loftárása
Posté le 26-02-2006 à 20:16:32  profilanswer
 

non, il faut utiliser mysql_real_escape_string [:petrus75] (non c'est pas une blague)
 
et unquoter si les magic_quotes sont activées [:petrus75]
 
Ou alors utiliser mysqli* et les prepared statements si dispo (il faut PHP5)


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
mood
Publicité
Posté le 26-02-2006 à 20:16:32  profilanswer
 

n°1313883
cvex
$CveX
Posté le 26-02-2006 à 20:29:17  profilanswer
 

Merci pour ton aide :p
 
J'ai trouvé un truc interressant :
http://www.nexen.net/index.php?opt [...] string.php
 
Je le diffuse si jamais quelqu'un passe et se pose des question ^^


Message édité par cvex le 26-02-2006 à 20:29:34

---------------
http://forum.hardware.fr/hardwaref [...] 1293-1.htm
n°1313885
masklinn
í dag viðrar vel til loftárása
Posté le 26-02-2006 à 20:30:23  profilanswer
 

http://fr2.php.net/manual/fr/funct [...] string.php [:petrus75]
http://fr2.php.net/manual/en/funct [...] string.php [:petrus75]


Message édité par masklinn le 26-02-2006 à 20:30:45

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  comment faire pour vérifier qu'un parrain existe?

 

Sujets relatifs
[VBScript] [RESOLU] Checksum, vérifier l'intégrité d'un fichier vbsORA-00955:ce nom dobjet existe déjà:prob ac ORACLE migration workbench
si la valeur d'une variable existe deja[PHP] vérifier le contenu d'une variable
Vérifier un proxyVerifier un formulaire
VERIFIER CONTENU CHAINE CARACTERE[ C ] le flush() existe t-il en C ?
pourquoi "sys.setdefaultencoding" n'existe pas ?la bonne manière de vérifier le type d'un objet ?
Plus de sujets relatifs à : comment faire pour vérifier qu'un parrain existe?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)