[php] rajouter une vérification dans mon code
Résolu/Fermé
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
-
17 juin 2006 à 10:39
Thom@s Messages postés 3412 Date d'inscription mardi 4 mars 2003 Statut Modérateur Dernière intervention 28 septembre 2019 - 17 juin 2006 à 14:20
Thom@s Messages postés 3412 Date d'inscription mardi 4 mars 2003 Statut Modérateur Dernière intervention 28 septembre 2019 - 17 juin 2006 à 14:20
A voir également:
- [php] rajouter une vérification dans mon code
- Le code ascii - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
5 réponses
Thom@s
Messages postés
3412
Date d'inscription
mardi 4 mars 2003
Statut
Modérateur
Dernière intervention
28 septembre 2019
678
17 juin 2006 à 11:03
17 juin 2006 à 11:03
Salut !
Pour vérifier que le pseudo n'est pas déjà dans la base, il faut lancer une requête sur ce pseudo et vérifier que le nombre de résultats est égal à zéro.
Voilà donc le code modifié :
• Deux remarques :
1) J'ai mis les balises <html>, <body>, etc. en dur une fois pour toutes (en début et fin de page), pour ne pas les répéter dans chaque echo.
2) Pour la sécurité de ton script (pour éviter les "injections SQL"), j'ai ajouté addslashes et stripslashes. Ces deux fontions servent respectivement à ajouter et supprimer les antislashes devant les caractères tels que les guillemets (") ou les apostrophes (').
- On supprime d'abord les slashes s'ils ont été ajoutés automatiquement;
- On les ajoute ensuite. Comme ça, on est bien sûr qu'ils sont là ;-)
A+ :)
Pour vérifier que le pseudo n'est pas déjà dans la base, il faut lancer une requête sur ce pseudo et vérifier que le nombre de résultats est égal à zéro.
Voilà donc le code modifié :
<html> <head> <META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://www.zone-mobile.net/form_inscription.php"> </head> <body> <? if ( isset($_POST['pseudo'])) $pseudo=addslashes(stripslashes($_POST['pseudo'])); if ( isset($_POST['passe'])) $passe=addslashes(stripslashes($_POST['passe'])); if ( isset($_POST['adresse'])) $adresse=addslashes(stripslashes($_POST['adresse'])); // Les addslashes sont nécessaires pour la sécurité du script (pour éviter des "injections SQL") if ($pseudo && $passe && $adresse) { echo '<html> <head> </head> <body>'; $dbc = @mysql_connect ("localhost", "zone_zone", "*****"); if(!mysql_errno($dbc)) { mysql_select_db("zone_bdd"); $requete2 = "SELECT id FROM v2 WHERE pseudo='".$pseudo."'"; // On recherche le pseudo dans la base /* Bien sûr, c'est à adapter (ça suppose que le champ "clé" de ta table s'appelle id, que ta table s'appelle v2 et que le champ qui contient les pseudos s'appelle pseudo) */ $requete2_query = mysql_query($requete2); if (mysql_num_rows($requete2_query)<1) { // Si le pseudo n'existe pas $requete1 = "insert into v2 values( '' , '".$pseudo."' , '".$passe."' , '".$adresse."')"; mysql_query($requete1); echo 'Bravo, votre inscription est bien prise en compte. Si vous avez demandé une confirmation par e-mail, celle-ci a été envoyée !'; } else { // Si le pseudo existe déjà echo 'Vous êtes déjà inscrit.<br> Aussi, votre inscription n\'a pas été prise en compte une seconde fois.'; } mysql_free_result($requete2_query); } else { 'Merci de remplir tous les champs'; } } mysql_close(); $mail=$_POST['mail']; if ($mail == '1') { mail($adresse, "Confirmation d'inscription au site zone-mobile.net", "Bonjour et merci pour votre inscription\r\nVous avez demandé à recevoir par e-mail vos identifiants pour vous connecter au site zone-mobile.net\r\nVoici vos informations :\r\nPseudo : ".$pseudo ."\r\nMot de passe : ". $passe."\r\n". "Le webmaster vous souhaite une agréable visite sur zone-mobile.net !\r\nPs : Ce mail a été envoyé automatiquement suite à votre demande d'inscription sur zone-mobile.net. Merci de ne pas y répondre.", "From:inscription@zone-mobile.net\r\nReply-To:inscription@zone-mobile.net"); } else { echo "<p></p>"; } ?> <a href="http://www.zone-mobile.net/accueil.php">Retour à l'accueil</a> </body> </html>
• Deux remarques :
1) J'ai mis les balises <html>, <body>, etc. en dur une fois pour toutes (en début et fin de page), pour ne pas les répéter dans chaque echo.
2) Pour la sécurité de ton script (pour éviter les "injections SQL"), j'ai ajouté addslashes et stripslashes. Ces deux fontions servent respectivement à ajouter et supprimer les antislashes devant les caractères tels que les guillemets (") ou les apostrophes (').
- On supprime d'abord les slashes s'ils ont été ajoutés automatiquement;
- On les ajoute ensuite. Comme ça, on est bien sûr qu'ils sont là ;-)
A+ :)
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
64
17 juin 2006 à 11:28
17 juin 2006 à 11:28
salut
merci
par contre y a un pb j'obtiens si je ne remplis aucun champs warning mysql_close() puis si le pseudo est déjà prix iil envois quand même le mail de confirmation !
merci
merci
par contre y a un pb j'obtiens si je ne remplis aucun champs warning mysql_close() puis si le pseudo est déjà prix iil envois quand même le mail de confirmation !
merci
Thom@s
Messages postés
3412
Date d'inscription
mardi 4 mars 2003
Statut
Modérateur
Dernière intervention
28 septembre 2019
678
17 juin 2006 à 12:43
17 juin 2006 à 12:43
Re,
Ben oui, il faut adapter le code :-)
1) Il faut que mysql_conect() et mysql_close() soient ensemble: soit tous les deux dans le if (ce que j'ai fait), soit tous les deux hors du if.
2) Ben pour qu'il envoie le mail de confirmation seulement si le pseudo n'existe pas, il suffit de mettre le mail() dans le (mysql_num_rows($requete2_query)<1).
3) Les if/else étaient un peu confus; j'ai essayé de clarifier ça.
A+ :-)
Ben oui, il faut adapter le code :-)
1) Il faut que mysql_conect() et mysql_close() soient ensemble: soit tous les deux dans le if (ce que j'ai fait), soit tous les deux hors du if.
2) Ben pour qu'il envoie le mail de confirmation seulement si le pseudo n'existe pas, il suffit de mettre le mail() dans le (mysql_num_rows($requete2_query)<1).
3) Les if/else étaient un peu confus; j'ai essayé de clarifier ça.
<html> <head> <META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://www.zone-mobile.net/form_inscription.php"> </head> <body> <? if ( isset($_POST['pseudo'])) $pseudo=addslashes(stripslashes($_POST['pseudo'])); if ( isset($_POST['passe'])) $passe=addslashes(stripslashes($_POST['passe'])); if ( isset($_POST['adresse'])) $adresse=addslashes(stripslashes($_POST['adresse'])); // Les addslashes sont nécessaires pour la sécurité du script (pour éviter des "injections SQL") if ($pseudo && $passe && $adresse && !mysql_errno($dbc)) { echo '<html> <head> </head> <body>'; $dbc = @mysql_connect ("localhost", "zone_zone", "*****"); mysql_select_db("zone_bdd"); $requete2 = "SELECT id FROM v2 WHERE pseudo='".$pseudo."'"; // On recherche le pseudo dans la base /* Bien sûr, c'est à adapter (ça suppose que le champ "clé" de ta table s'appelle id, que ta table s'appelle v2 et que le champ qui contient les pseudos s'appelle pseudo) */ $requete2_query = mysql_query($requete2); if (mysql_num_rows($requete2_query)<1) { // Si le pseudo n'existe pas $requete1 = "insert into v2 values( '' , '".$pseudo."' , '".$passe."' , '".$adresse."')"; mysql_query($requete1); echo 'Bravo, votre inscription est bien prise en compte. Si vous avez demandé une confirmation par e-mail, celle-ci a été envoyée !'; $mail=$_POST['mail']; if ($mail == '1') { mail($adresse, "Confirmation d'inscription au site zone-mobile.net", "Bonjour et merci pour votre inscription\r\nVous avez demandé à recevoir par e-mail vos identifiants pour vous connecter au site zone-mobile.net\r\nVoici vos informations :\r\nPseudo : ".$pseudo ."\r\nMot de passe : ". $passe."\r\n". "Le webmaster vous souhaite une agréable visite sur zone-mobile.net !\r\nPs : Ce mail a été envoyé automatiquement suite à votre demande d'inscription sur zone-mobile.net. Merci de ne pas y répondre.", "From:inscription@zone-mobile.net\r\nReply-To:inscription@zone-mobile.net"); } } else { // Si le pseudo existe déjà echo 'Vous êtes déjà inscrit.<br> Aussi, votre inscription n\'a pas été prise en compte une seconde fois.'; } mysql_free_result($requete2_query); mysql_close(); } else { 'Merci de remplir tous les champs'; } ?> <a href="http://www.zone-mobile.net/accueil.php">Retour à l'accueil</a> </body> </html>
A+ :-)
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
64
17 juin 2006 à 13:04
17 juin 2006 à 13:04
re
en fait :
si un pseudo est déjà prit j'obtient :
Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in /home/zone/domains/zone-mobile.net/public_html/inscription.php on line 19
Désolé, mais ce pseudo existe déjà.
Veuillez en choisir un autre. Retour à l'accueil.
Si je ne rentre aucun infos dans le formulaire je n'obtiens pas de message d'erreur alors que je devrait avoir : merci de remplir tous les champs" puis je suis r'envoyer vers la page d'inscription...
d'où vient le pb?
merci à toi t'es sympat
en fait :
si un pseudo est déjà prit j'obtient :
Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in /home/zone/domains/zone-mobile.net/public_html/inscription.php on line 19
Désolé, mais ce pseudo existe déjà.
Veuillez en choisir un autre. Retour à l'accueil.
Si je ne rentre aucun infos dans le formulaire je n'obtiens pas de message d'erreur alors que je devrait avoir : merci de remplir tous les champs" puis je suis r'envoyer vers la page d'inscription...
d'où vient le pb?
merci à toi t'es sympat
Thom@s
Messages postés
3412
Date d'inscription
mardi 4 mars 2003
Statut
Modérateur
Dernière intervention
28 septembre 2019
678
17 juin 2006 à 13:10
17 juin 2006 à 13:10
Re,
1) Il faut mettre mysql_connect() et mysql_close() en-dehors du if (sinon, mysql_errno ne marche pas).
2) Pour vérifier que les champs sont bien remplis, il ne suffit pas de vérifier que $_POST['LeChamp'] existe: isset($_POST['LeChamp']) .
Il faut vérifier que la variable n'est pas vide :
$LeChamp!=''
(ce sont deux apostrophes qui se suivent)
Ca donne donc :
A+ :-)
1) Il faut mettre mysql_connect() et mysql_close() en-dehors du if (sinon, mysql_errno ne marche pas).
2) Pour vérifier que les champs sont bien remplis, il ne suffit pas de vérifier que $_POST['LeChamp'] existe: isset($_POST['LeChamp']) .
Il faut vérifier que la variable n'est pas vide :
$LeChamp!=''
(ce sont deux apostrophes qui se suivent)
Ca donne donc :
<html> <head> <META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://www.zone-mobile.net/form_inscription.php"> </head> <body> <? if ( isset($_POST['pseudo'])) $pseudo=addslashes(stripslashes($_POST['pseudo'])); if ( isset($_POST['passe'])) $passe=addslashes(stripslashes($_POST['passe'])); if ( isset($_POST['adresse'])) $adresse=addslashes(stripslashes($_POST['adresse'])); // Les addslashes sont nécessaires pour la sécurité du script (pour éviter des "injections SQL") $dbc = @mysql_connect ("localhost", "zone_zone", "*****"); if ($pseudo!='' && $passe!='' && $adresse!='' && !mysql_errno($dbc)) { echo '<html> <head> </head> <body>'; mysql_select_db("zone_bdd"); $requete2 = "SELECT id FROM v2 WHERE pseudo='".$pseudo."'"; // On recherche le pseudo dans la base /* Bien sûr, c'est à adapter (ça suppose que le champ "clé" de ta table s'appelle id, que ta table s'appelle v2 et que le champ qui contient les pseudos s'appelle pseudo) */ $requete2_query = mysql_query($requete2); if (mysql_num_rows($requete2_query)<1) { // Si le pseudo n'existe pas $requete1 = "insert into v2 values( '' , '".$pseudo."' , '".$passe."' , '".$adresse."')"; mysql_query($requete1); echo 'Bravo, votre inscription est bien prise en compte. Si vous avez demandé une confirmation par e-mail, celle-ci a été envoyée !'; $mail=$_POST['mail']; if ($mail == '1') { mail($adresse, "Confirmation d'inscription au site zone-mobile.net", "Bonjour et merci pour votre inscription\r\nVous avez demandé à recevoir par e-mail vos identifiants pour vous connecter au site zone-mobile.net\r\nVoici vos informations :\r\nPseudo : ".$pseudo ."\r\nMot de passe : ". $passe."\r\n". "Le webmaster vous souhaite une agréable visite sur zone-mobile.net !\r\nPs : Ce mail a été envoyé automatiquement suite à votre demande d'inscription sur zone-mobile.net. Merci de ne pas y répondre.", "From:inscription@zone-mobile.net\r\nReply-To:inscription@zone-mobile.net"); } } else { // Si le pseudo existe déjà echo 'Vous êtes déjà inscrit.<br> Aussi, votre inscription n\'a pas été prise en compte une seconde fois.'; } mysql_free_result($requete2_query); } else { 'Merci de remplir tous les champs'; } mysql_close(); ?> <a href="http://www.zone-mobile.net/accueil.php">Retour à l'accueil</a> </body> </html>
A+ :-)
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
64
17 juin 2006 à 13:38
17 juin 2006 à 13:38
déjà je n'obtiens pas le message d'erreur warning... mais si je ne remplis aucun champs, je n'ai pas le message d'erreur "merci de remplir tous les champs" si le pseudo est déjà utilisé ça met bien le bon message d'erreur.
Code php
c'est vrai que je m'y pert dans ce code ! car je n'ai jamais utilisé de if dans un autre donc je me mélange...
merci
Code php
<html> <head> <META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://www.zone-mobile.net/form_inscription.php"> </head> <body> <? if ( isset($_POST['pseudo'])) $pseudo=addslashes(stripslashes($_POST['pseudo'])); if ( isset($_POST['passe'])) $passe=addslashes(stripslashes($_POST['passe'])); if ( isset($_POST['adresse'])) $adresse=addslashes(stripslashes($_POST['adresse'])); // Les addslashes sont nécessaires pour la sécurité du script (pour éviter des "injections SQL") $dbc = @mysql_connect ("localhost", "zone_zone", "*****"); if ($pseudo!='' && $passe!='' && $adresse!='' && !mysql_errno($dbc)) { echo '<html> <head> </head> <body>'; mysql_select_db("zone_bdd"); $requete2 = "SELECT id FROM v2 WHERE pseudo='".$pseudo."'"; // On recherche le pseudo dans la base /* Bien s?r, c'est ? adapter (ça suppose que le champ "clé" de ta table s'appelle id, que ta table s'appelle v2 et que le champ qui contient les pseudos s'appelle pseudo) */ $requete2_query = mysql_query($requete2); if (mysql_num_rows($requete2_query)<1) { // Si le pseudo n'existe pas $requete1 = "insert into v2 values( '' , '".$pseudo."' , '".$passe."' , '".$adresse."')"; mysql_query($requete1); echo 'Bravo, votre inscription est bien prise en compte. Si vous avez demandé une confirmation par e-mail, celle-ci a été envoyée !'; $mail=$_POST['mail']; if ($mail == '1') { mail($adresse, "Confirmation d'inscription au site zone-mobile.net", "Bonjour et merci pour votre inscription\r\nVous avez demandé ? recevoir par e-mail vos identifiants pour vous connecter au site zone-mobile.net\r\nVoici vos informations :\r\nPseudo : ".$pseudo ."\r\nMot de passe : ". $passe."\r\n". "Le webmaster vous souhaite une agréable visite sur zone-mobile.net !\r\nPs : Ce mail a été envoyé automatiquement suite ? votre demande d'inscription sur zone-mobile.net. Merci de ne pas y répondre.", "From:inscription@zone-mobile.net\r\nReply-To:inscription@zone-mobile.net"); } } else { // Si le pseudo existe déj? echo 'Désolé, mais ce pseudo est déjà utilisé. Veuillez en choisir un autre.'; } mysql_free_result($requete2_query); } else { 'Merci de remplir tous les champs'; } mysql_close(); ?> <a href=" http://www.zone-mobile.net/accueil.php">Retour à l'accueil</a> </body> </html>
c'est vrai que je m'y pert dans ce code ! car je n'ai jamais utilisé de if dans un autre donc je me mélange...
merci
Thom@s
Messages postés
3412
Date d'inscription
mardi 4 mars 2003
Statut
Modérateur
Dernière intervention
28 septembre 2019
678
17 juin 2006 à 13:56
17 juin 2006 à 13:56
Re,
C'est une erreur d'inattention: il manque le echo (en bas, dans le else, devant 'Merci de remplir tous les champs';).
;-)
A+
C'est une erreur d'inattention: il manque le echo (en bas, dans le else, devant 'Merci de remplir tous les champs';).
;-)
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
64
17 juin 2006 à 14:12
17 juin 2006 à 14:12
salut
c'est bon ça marche !
merci bon va falloir que je me face à ces if (ce sont les {} qui me perturbent...)
A+ et encoremerci
c'est bon ça marche !
merci bon va falloir que je me face à ces if (ce sont les {} qui me perturbent...)
A+ et encoremerci
Thom@s
Messages postés
3412
Date d'inscription
mardi 4 mars 2003
Statut
Modérateur
Dernière intervention
28 septembre 2019
678
17 juin 2006 à 14:20
17 juin 2006 à 14:20
De rien ;-)
A+
A+