Phpmysql
Fermé
salna
Messages postés
42
Date d'inscription
vendredi 21 décembre 2007
Statut
Membre
Dernière intervention
12 janvier 2009
-
1 nov. 2008 à 21:41
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 8 nov. 2008 à 21:08
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 8 nov. 2008 à 21:08
7 réponses
j'ai fait une requete pour afficher tout le contenu de la table dans un tableau Non tu n'affiches pas tout le contenu de la table. Quand je lis ton code :
Tu commences par extraire tout de ta table pour compter les lignes.
Puis tu fais une boucle for en ré-interrogeant ta base à chaque fois avec l'id 1, puis 2 , etc...). C'est absurde, Tu avais déjà extrait tous les champs ! Un foreach sans nouvelle requête eût été beaucoup plus logique. Surtout que ta requête ne va pas marcher : si tu as 6 membres, que tu effaces l'id 3 (par exemple), il ne t'en reste que 5 et tu vas interroger 1,2,3,4,5 au lieu de 1,2,4,5,6.
Ensuite pour chaque membre qui n'est pas celui recherché, tu affiches un nouveau formulaire complet, du DOCTYPE au /html. Tu risques donc d'en afficher 10,20,100 peut-être avant de te rende compte que finalement si, ce pseudo est bien dans ta base, et d'afficher les bonnes données.
Avec une seule et unique requête avec une clause "select * from `inscription` WHERE `login`='".mysql_real_escape_string($pseudo)."'", tu sais directement si un login est ou non dans ta base. Tu n'as pas besoin d'une boucle for pour aller comparer les enregistrements un par un.
Dernier détail : si tu récupères tes infos dans $test, n'essaye pas d'afficher $donnees...
Tu commences par extraire tout de ta table pour compter les lignes.
Puis tu fais une boucle for en ré-interrogeant ta base à chaque fois avec l'id 1, puis 2 , etc...). C'est absurde, Tu avais déjà extrait tous les champs ! Un foreach sans nouvelle requête eût été beaucoup plus logique. Surtout que ta requête ne va pas marcher : si tu as 6 membres, que tu effaces l'id 3 (par exemple), il ne t'en reste que 5 et tu vas interroger 1,2,3,4,5 au lieu de 1,2,4,5,6.
Ensuite pour chaque membre qui n'est pas celui recherché, tu affiches un nouveau formulaire complet, du DOCTYPE au /html. Tu risques donc d'en afficher 10,20,100 peut-être avant de te rende compte que finalement si, ce pseudo est bien dans ta base, et d'afficher les bonnes données.
Avec une seule et unique requête avec une clause "select * from `inscription` WHERE `login`='".mysql_real_escape_string($pseudo)."'", tu sais directement si un login est ou non dans ta base. Tu n'as pas besoin d'une boucle for pour aller comparer les enregistrements un par un.
Dernier détail : si tu récupères tes infos dans $test, n'essaye pas d'afficher $donnees...
Bonjour
À quoi sert ta boucle for ?
Tu balayes toute ta table en affichant le formulaire de saisie du mot de passe jusqu'à ce que tu trouves éventuellement les bons login/mot de passe. Pourquoi fais-tu ça ?
Il me semble que tu aurais dû faire une et une seule requête qui cherche sil y a dans la table une ligne avec les bons login/mot de passe et ensuite faire un traitement ou un autre en fonction du résultat.
À quoi sert ta boucle for ?
Tu balayes toute ta table en affichant le formulaire de saisie du mot de passe jusqu'à ce que tu trouves éventuellement les bons login/mot de passe. Pourquoi fais-tu ça ?
Il me semble que tu aurais dû faire une et une seule requête qui cherche sil y a dans la table une ligne avec les bons login/mot de passe et ensuite faire un traitement ou un autre en fonction du résultat.
salna
Messages postés
42
Date d'inscription
vendredi 21 décembre 2007
Statut
Membre
Dernière intervention
12 janvier 2009
2 nov. 2008 à 22:32
2 nov. 2008 à 22:32
salut, j'ai fait une requete pour afficher tout le contenu de la table dans un tableau ,puis on compare le login /mot de pass avec le login de formulaire (la boucle for pour parcourir le le tableau à chaque compareson ) .
romano06
Messages postés
97
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
4 mai 2009
8
6 nov. 2008 à 20:26
6 nov. 2008 à 20:26
C'est bizarre, tu l'a eu ou ton script PHP ?
salna
Messages postés
42
Date d'inscription
vendredi 21 décembre 2007
Statut
Membre
Dernière intervention
12 janvier 2009
6 nov. 2008 à 21:53
6 nov. 2008 à 21:53
tu l'a eu ou ton script PHP ? !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
pas compris
pas compris
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
romano06
Messages postés
97
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
4 mai 2009
8
7 nov. 2008 à 16:30
7 nov. 2008 à 16:30
Ce code laque tu as mis, tu l'a eu ou, il est compliqué on peut faire beaucoup plus simple tu sait ^^
salna
Messages postés
42
Date d'inscription
vendredi 21 décembre 2007
Statut
Membre
Dernière intervention
12 janvier 2009
8 nov. 2008 à 16:16
8 nov. 2008 à 16:16
moi , j'ai utilisé un Wampserver (phpadmin) pour faire la connection vers ma table (base dedonnées)
salut ,j'ai essié mais le prob n'as pas résoudre.
On veut bien t'aider, mais quand on te demande ton script modifié tu ne le donnes pas. Comment veux-tu qu'on t'aide alors ?
On veut bien t'aider, mais quand on te demande ton script modifié tu ne le donnes pas. Comment veux-tu qu'on t'aide alors ?
salna
Messages postés
42
Date d'inscription
vendredi 21 décembre 2007
Statut
Membre
Dernière intervention
12 janvier 2009
8 nov. 2008 à 20:44
8 nov. 2008 à 20:44
merci, sayi j'ai modifier encord et mon prob est résolu voici ce qui monque de mon script:
$user=mysql_query("select * from inscription WHERE pseudo='".mysql_real_escape_string($pseudo)."' AND modepass='".mysql_real_escape_string($modepass)."'")or die(mysql_error());
if($donnees = mysql_fetch_array($user) )
{
une autre fois mmmmmmmmmmmmerci.
$user=mysql_query("select * from inscription WHERE pseudo='".mysql_real_escape_string($pseudo)."' AND modepass='".mysql_real_escape_string($modepass)."'")or die(mysql_error());
if($donnees = mysql_fetch_array($user) )
{
une autre fois mmmmmmmmmmmmerci.
tarek_dotzero
Messages postés
817
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
12 avril 2022
121
8 nov. 2008 à 21:08
8 nov. 2008 à 21:08
Slt,
Je ne sais pas ou est l'erreur, mais le code contient une faille de sécurité: est ce la fonction .mysql_real_escap_string($var) peut vous protejer contre les injection SQL?
Une méthode est simple (si la réponse est NON): tu cherche le login, en faisant une requete seulement sur le Pseudo puis tu récupère le champs mot_de_passe et tu comparre, et comme cela vous arrivez même à définir la source d'echec: pseudo introuvable ou mot de passe incorrect.
Je ne sais pas ou est l'erreur, mais le code contient une faille de sécurité: est ce la fonction .mysql_real_escap_string($var) peut vous protejer contre les injection SQL?
Une méthode est simple (si la réponse est NON): tu cherche le login, en faisant une requete seulement sur le Pseudo puis tu récupère le champs mot_de_passe et tu comparre, et comme cela vous arrivez même à définir la source d'echec: pseudo introuvable ou mot de passe incorrect.
3 nov. 2008 à 21:56
6 nov. 2008 à 20:22