Traitement validation php aidez moi !!
Fermé
ptilou
-
2 oct. 2008 à 15:40
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 14 oct. 2008 à 20:29
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 14 oct. 2008 à 20:29
A voir également:
- Traitement validation php aidez moi !!
- Easy php - Télécharger - Divers Web & Internet
- Colis en traitement sur le site logistique de destination. ✓ - Forum Consommation & Internet
- Temps validation annonce le bon coin - Forum Hotmail / Outlook.com
- Excel validation des données liste - Guide
- Commande en cours de validation fnac - Forum Consommation & Internet
18 réponses
bg62
Messages postés
23654
Date d'inscription
samedi 22 octobre 2005
Statut
Modérateur
Dernière intervention
8 novembre 2024
2 385
2 oct. 2008 à 15:41
2 oct. 2008 à 15:41
bonjour
nous sommes sur un forum d'entraide, certes, mais s'inscrire serait cependant beaucoup mieux
ne serait-ce que vis à vis de ceux qui vous aident sur ce forum ...
ne restez donc pas anonyme !
@mitiés
b g
nous sommes sur un forum d'entraide, certes, mais s'inscrire serait cependant beaucoup mieux
ne serait-ce que vis à vis de ceux qui vous aident sur ce forum ...
ne restez donc pas anonyme !
@mitiés
b g
Bonjour
A mon avis c'est une erreur de traiter le formulaire en deux scripts distincts : affichage et analyse. Même si on voit souvent le traitement des formulaires présenté comme ça.
Il est beaucoup plus simple de faire analyser le formulaire par le script du formulaire lui-même. Comme ça, on peut si nécessaire renvoyer le formulaire avec les messages d'erreur et les valeurs déjà saisies sans être obligé d'avoir recours à des variables de session ou autres astuces
A mon avis c'est une erreur de traiter le formulaire en deux scripts distincts : affichage et analyse. Même si on voit souvent le traitement des formulaires présenté comme ça.
Il est beaucoup plus simple de faire analyser le formulaire par le script du formulaire lui-même. Comme ça, on peut si nécessaire renvoyer le formulaire avec les messages d'erreur et les valeurs déjà saisies sans être obligé d'avoir recours à des variables de session ou autres astuces
Merci pour la réponse mais pour la sécurité, il n'y a pas de risque pour le script en faisant ainsi et est-ce possible uniquement en php pas de javascript ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
2 oct. 2008 à 17:11
2 oct. 2008 à 17:11
Bonjour,
tout à fait d'accord avec tot pour ce qui est de mettre le formulire et son traitement dans le même script
si tu veux absolument faire 2 fichiers séparés, en metant le traitement dans un répertoire protégé par un .htaccess
une piste:
dans ton formulaire.php
tu mets
tout à fait d'accord avec tot pour ce qui est de mettre le formulire et son traitement dans le même script
si tu veux absolument faire 2 fichiers séparés, en metant le traitement dans un répertoire protégé par un .htaccess
une piste:
dans ton formulaire.php
tu mets
<?php if(isset($_GET['erreur']){$erreur=$_GET['erreur'];}else{$erreur="";} puis ton formulaire et tu affiche le message d'erreur eventuel en traitant la valeur que tu as passée dans 'erreur' (par un switch case pour faire des messages d'erreur differents ou en passanr directement dans erreur= le texte du message) ?> dans traitement.php si pas bon: header("Location:formulaire.php?erreur=10");//par exemple exit(); si bon tu continue
ptilou
>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
2 oct. 2008 à 17:46
2 oct. 2008 à 17:46
Bonjour et merci alain pour l'exemple
En suivant les conseils a toto j'ai crée vite fait un petit formulaire d'exemple voici le code
Il fonctionne bien mais il y a un soucis quand je clic sur la page: http://s230667741.onlinehome.fr/inscription.php on peut voir qu'il affiche d'entré que l'email n'est pas valide sans même l'avoir saisi.
Je ne trouve pas l'erreur dans mon code
En suivant les conseils a toto j'ai crée vite fait un petit formulaire d'exemple voici le code
<?php // vérification de la synthaxe de l'email $verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!"; ?> <html> <head> <title>incription</title> </head> <body> <form method="post" action="inscription.php"> <p align='center'> Votre pseudo :<br /> <?php if (($masqué == "ok") && (strlen($pseudo) == 0)){ echo "<font color='red'>inscrivez un pseudo</font>";} ?><br /> <input type="text" name="pseudo" value=<? echo $pseudo;?>> <br /> Votre email :<br /> <?php if (($masqué == "ok") && (strlen($email) == 0)){ echo "<font color='red'>inscrivez votre email</font>";} elseif (!preg_match($verif,$email)){ echo "<font color='red'>L'email n'est pas valide</font>";} ?><br /> <input type="text" name="email" value=<? echo $email;?>> <br /> <input type="hidden" name="masqué" value="ok"> <input type="submit" name="Submit" value="Envoyer"> </p> </form> </body> </html>
Il fonctionne bien mais il y a un soucis quand je clic sur la page: http://s230667741.onlinehome.fr/inscription.php on peut voir qu'il affiche d'entré que l'email n'est pas valide sans même l'avoir saisi.
Je ne trouve pas l'erreur dans mon code
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Traiter dans le même script au lieu de deux scripts différents ne change pas significativement la sécurité. S'il fallait vraiment trancher, ce serait plutôt en faveur de la version à un seul script.
Quant au choix javascript/PHP, s'agissant de sécurité, il n'y a pas photo. Traiter la sécurité en javascript est absurde, puisque le code est chez le client. Le javascript est très bien pour traiter les erreurs de saisie, pas les tentatives de fraude.
Quant au choix javascript/PHP, s'agissant de sécurité, il n'y a pas photo. Traiter la sécurité en javascript est absurde, puisque le code est chez le client. Le javascript est très bien pour traiter les erreurs de saisie, pas les tentatives de fraude.
En fait le traitement des champs saisis fonctionne à merveille mais il y a juste un hic avec la synthaxe de l'email qui s'affiche en ouvrant la page http://s230667741.onlinehome.fr/inscription.php
Vous avez éventuellement une idée les gars ?
Merci
Merci
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
2 oct. 2008 à 21:06
2 oct. 2008 à 21:06
Essayes comme ça:
<?php // vérification de la synthaxe de l'email $verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!"; if (isset($_POST['Submit'])){ //si registar Global est à off dans le php.ini il faut récuperer les valeurs POST, comme on ne sait pas à priori il faut le faire systématiquement //au passage tu n'as pas besoin du champ cache "masque" tu peux faire le test sur le nom du bouton type="Submit" $masque=$_POST['masque']; // eviter les accents !!!!!! $pseudo=$_POST['pseudo']; $email=$_POST['email']; } ?> <html> <head> <title>incription</title> </head> <body> <form method="post" action="inscription.php"> <p align='center'> Votre pseudo :<br /> <?php if (($masque == "ok") && (strlen($pseudo) == 0)){ echo "<font color='red'>inscrivez un pseudo</font>";} ?><br /> <input type="text" name="pseudo" value=<? echo $pseudo;?>> <br /> Votre email :<br /> <?php if (($masque == "ok") && (strlen($email) == 0)){ echo "<font color='red'>inscrivez votre email</font>";} elseif (!preg_match($verif,$email)){ echo "<font color='red'>L'email n'est pas valide</font>";} ?><br /> <input type="text" name="email" value=<? echo $email;?>> <br /> <input type="hidden" name="masque" value="ok"> <input type="submit" name="Submit" value="Envoyer"> </p> </form> </body> </html>
Salut alain merci bien pour la correction, j'ai changé le script avec ta rectification mais jai toujours le même problème
regarde http://s230667741.onlinehome.fr/inscription.php
regarde http://s230667741.onlinehome.fr/inscription.php
Re Alain,
J'ai du mal à trouver la faille dans mon script, bon je n'ai pas regardé dans php.ini si le registar global est à OFF, logiquement on trouce cela sur le serveur si j'ai compris ?
J'ai du mal à trouver la faille dans mon script, bon je n'ai pas regardé dans php.ini si le registar global est à OFF, logiquement on trouce cela sur le serveur si j'ai compris ?
elseif (!preg_match($verif,$email)) Tu testes l'email même s'il n'y en a eu aucun !
essaye plutôt
elseif ( isset($_POST['email']) && !preg_match($verif,$email))
(et remplace synthaxe par syntaxe)
essaye plutôt
elseif ( isset($_POST['email']) && !preg_match($verif,$email))
(et remplace synthaxe par syntaxe)
Salut toto merci et bravo pour la solution, je viens de tester avec
Encore merci les gars c'est vraiment sympa de votre part, une dernière question, pour insérer les données saisies dans une base de donnée je peux faire cela également sur le même script ?
Bonne journée
elseif ( isset($_POST['email']) && !preg_match($verif,$email))ca marche nickel je suis bête je n'y ai même pas pensé.
Encore merci les gars c'est vraiment sympa de votre part, une dernière question, pour insérer les données saisies dans une base de donnée je peux faire cela également sur le même script ?
Bonne journée
<ital>pour insérer les données saisies dans une base de donnée je peux faire cela également sur le même script ?<ital>
Bien sûr. Tes données sont disponibles dans ce script, c'est le meilleur endroit pour le faire.
Après avoir testé avec un if (isset($_POST['...'])) qu'il y a bien des données à enregistrer ;)
Bien sûr. Tes données sont disponibles dans ce script, c'est le meilleur endroit pour le faire.
Après avoir testé avec un if (isset($_POST['...'])) qu'il y a bien des données à enregistrer ;)
Ok mais avant cela,je pense qu'il serait préférable de vérifier l'authenticité de l'email grâce à un lien de confirmation envoyé par mail à l'inscrit. Puis ensuite,confirmez l'inscription et l'enregistré dans la base de donnée et vérifier éventuellement s'il n'est pas déja dans la liste pour éviter les doublons.
Qu'en pensez-vous ?
Qu'en pensez-vous ?
Alors messieurs mon idée serait-elle mauvaise ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
3 oct. 2008 à 21:42
3 oct. 2008 à 21:42
Ton idee est bonne mais il faudra que tu l'enregistres qd même dans la BDD avant d'envoyer le mail de "test"
et tu mets un champ en plus dans ta table, "mail_confirme" par exemple qui sera a 0 par defaut et que tu mets à 1 qd la réponse reviendra
et tu mets un champ en plus dans ta table, "mail_confirme" par exemple qui sera a 0 par defaut et que tu mets à 1 qd la réponse reviendra
ptilou
>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
3 oct. 2008 à 23:01
3 oct. 2008 à 23:01
Salut alain, je saisi pas bien. Un champ en plus ok mais à 0 par défaut où, dans la BDD ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
>
ptilou
3 oct. 2008 à 23:28
3 oct. 2008 à 23:28
Qd tu cree ta table dans la BDD tu mets en plus un champ et tu peux definir lorsque tu le cree dans phpmyadmin une valeur par defaut
ou tout simplement lors du premier INSERT tu mets la valeur à 0 et au moment de la valid tu fais un UPDATE pour le passer à 1
ou tout simplement lors du premier INSERT tu mets la valeur à 0 et au moment de la valid tu fais un UPDATE pour le passer à 1
Hello les amis,
Je reviens vers vous car j'ai un petit souci qui me casse la tête depuis 2 jours.
Donc dans le traitement php de mon formulaire j'enregistre les champs saisis dans une base de donnée avec une clé générée aléatoirement qui servira lors de la confirmation d'inscription par mail.
voici le morceau du code :
Seulement voila avec ce code je n'ai aucun message d'erreur mais rien ne s'enregistre dans la base de donné.
Par contre si je retire du code la clé aléatoire tout s'enregistre dans la BDD.
Je n' y comprend plus rien sachant que j'ai absolument besoin d'insérer cette clé aléatoire pour la confirmation d'inscription.
Quelqu'un pourrait m'éclaircir ?
Merci pour l'aide
Je reviens vers vous car j'ai un petit souci qui me casse la tête depuis 2 jours.
Donc dans le traitement php de mon formulaire j'enregistre les champs saisis dans une base de donnée avec une clé générée aléatoirement qui servira lors de la confirmation d'inscription par mail.
voici le morceau du code :
............... .............. $cle = md5(microtime(TRUE)*100000); // requête sql $sql = "INSERT INTO inscription_scripts_form(id, prenom, email, cle) VALUES('','$prenom','$email',$cle)"; // insère des données du formulaire et da la clé dans la base de donnée mysql_query($sql);
Seulement voila avec ce code je n'ai aucun message d'erreur mais rien ne s'enregistre dans la base de donné.
Par contre si je retire du code la clé aléatoire tout s'enregistre dans la BDD.
Je n' y comprend plus rien sachant que j'ai absolument besoin d'insérer cette clé aléatoire pour la confirmation d'inscription.
Quelqu'un pourrait m'éclaircir ?
Merci pour l'aide
Personne ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
14 oct. 2008 à 20:29
14 oct. 2008 à 20:29
Quuel caracteristique as tu mis pour le champ cle dans ta BDD ?
le code md5 fiat 15 ou 16 caracteres il te faut au moins un VARCHAR de 20
le code md5 fiat 15 ou 16 caracteres il te faut au moins un VARCHAR de 20