comment faire pour vérifier qu'un parrain existe? - PHP - Programmation
Marsh Posté le 26-02-2006 à 18:16:33
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.
Marsh Posté le 26-02-2006 à 18:21:49
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é
Marsh Posté le 26-02-2006 à 18:25:17
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.
Marsh Posté le 26-02-2006 à 18:47:36
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" );
}
}
Marsh Posté le 26-02-2006 à 19:00:40
au fait, tu as conscience que tu prépares une magnifique faille par SQL injection avec ta query?
Marsh Posté le 26-02-2006 à 19:14:04
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?
Marsh Posté le 26-02-2006 à 19:51:12
demande toi ce qui se passe si le contenu de $_POST['parrain'] est un truc du genre:
Code :
|
Marsh Posté le 26-02-2006 à 19:59:14
addslashes($_POST['parrain'])
C'est mieux?
Marsh Posté le 26-02-2006 à 20:16:32
non, il faut utiliser mysql_real_escape_string (non c'est pas une blague)
et unquoter si les magic_quotes sont activées
Ou alors utiliser mysqli* et les prepared statements si dispo (il faut PHP5)
Marsh Posté le 26-02-2006 à 20:29:17
Merci pour ton aide
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 ^^
Marsh Posté le 26-02-2006 à 20:30:23
http://fr2.php.net/manual/fr/funct [...] string.php
http://fr2.php.net/manual/en/funct [...] string.php
Marsh Posté le 26-02-2006 à 17:12:35
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