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
Bonjour,


j'ai un formulaire crée en 2 fichier php dont un pour l'inscription et l'autre qui traite les données saisies.

j'aimerai savoir s'il est possible d'affiché les éventuels messages d'erreurs directement dans le formulaire plutôt que sur la page php qui traite les données saisies ?

Merci du renseignement

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
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
0
Oui en effet je respecte votre point de vue, cela dit je le ferais si necessaire

Amicalement
0
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
0
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 ?
0
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
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

<?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
0
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
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

<?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
0

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.
0
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
0
Vous avez éventuellement une idée les gars ?

Merci
0
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
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>
0
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
0
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 ?
0
Au passage pas mal l'astuce avec "submit" cela évite d'avoir un champs hidden pour rien
0
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)
0
Salut toto merci et bravo pour la solution, je viens de tester avec
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
0
<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 ;)
0
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 ?
0
Alors messieurs mon idée serait-elle mauvaise ?
0
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
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
0
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
Salut alain, je saisi pas bien. Un champ en plus ok mais à 0 par défaut où, dans la BDD ?
0
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
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
0
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 :

...............
..............
$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
0
Personne ?
0
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
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
0
a l'aide svp
0