Modification d'un script d'envoi de formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Modification d'un script d'envoi de formulaire

par phpdog » 06 janv. 2008, 13:13

Personne ne peut m'aider ?

par phpdog » 25 déc. 2007, 15:41

Tu sais commenr faire pour revenir en arriére dans l'historique ?

J'ai vu qu'il y a history.back()

je l'ai ajouter comme ceci:

Code : Tout sélectionner

<?php // On récupére le contenu des formulaire dans des variables: $formMail = $_POST['mail']; $formNom = $_POST['nom']; $formPrenom = $_POST['prenom']; $formsociete = $_POST['societe']; $formactivite = $_POST['activite']; $formtelephone = $_POST['telephone']; $formCommentaire = $_POST['commentaire']; // On inclut le fichier contenant la fonction de redirection include ("redirection.php"); // On définit l'URL de redirection if ($_SERVER['HTTP_REFERER']) { $url_redirect = $_SERVER['HTTP_REFERER']; } else { $url_redirect = "formulaire.htm"; } if(!empty($formPrenom) && !empty($formNom) ){ $formCommentaire = htmlentities($formCommentaire); // On créer une unique variable contenant toutes les autres varaible du formulaire: $message = "$formNom $formPrenom vous contact via votre formulaire.\n \n Société: $formsociete \n Activité: $formactivite \n Telep $formtelephone \n Mail: $formMail \n \n message : \n $formCommentaire"; if( mail('[email protected]','Contact via formulaire ART ANIM',$message) && mail('[email protected]','Contact via formulaire ART ANIM',$message) ){ echo 'les informations on bien été envoyé!'; redirect($url_redirect, 3); // On effectue la redirection en fonction de l'url passée en argument et du temps (ici 10 micro-secondes) } else{ echo 'une erreur est survenu lors de l\'envoi du message'; redirect($url_redirect, 3); // Même méthode lorsqu'un autre message apparaît } } else{ echo 'il y a des champs vide echo merci de remplir les champs nom, prenom'; history.back() // Encore pareil... ;) } ?>
Mais ca ne marche pas, ca me renvoi une erreur

par phpdog » 23 déc. 2007, 14:56

Ben si, parce que si la rempli d'autre chan en revenant en arriére il n'aura pas à le reremplire

par Kaoteknik » 23 déc. 2007, 14:53

Eh bien, tu ne veux pas revenir au formulaire si les champs nom et prenom ne sont pas remplis ?

par phpdog » 23 déc. 2007, 14:48

Merci encore ;)

Mais c'est pas une autre url que je veut, c'est revenir en arriére

par Kaoteknik » 23 déc. 2007, 14:24

Je voudrai aussi, si des chan ne sont pas rempli que le message "il y a des champs vide echo merci de remplir les champs nom, prenom'" soit afficher 10 secondes, et aprés c'est 10 seconde que la page revienne en arriérre, est-ce possible ?
C'est de cette question là dont tu veux parler ?

Si oui, alors sans doute faudra-t-il indiquer une autre URL de redirection. A la fin du code tu pourrais avoir ceci :
else{
    echo 'il y a des champs vide echo merci de remplir les champs nom, prenom';
    redirect ($PHP_SELF, 10);
}
Ceci devrait te permettre de recharger la page contenant le formulaire.

par phpdog » 23 déc. 2007, 14:11

Ben c'est pas totalement résolu, il reste ma deuxième question, pour revenir en arriére dans l'historique

par Kaoteknik » 23 déc. 2007, 14:05

Alors penses à mettre le tag "résolu" sur ce topic... J'en connais quelques uns qui apprécierons ! ;)

par phpdog » 23 déc. 2007, 14:01

Parfait ca fonctionne maitenant

par Kaoteknik » 23 déc. 2007, 13:55

Il semblerait que j'ai oublié des "echo" dans la fonction. Essaie ça :
<?php
function redirect ($url, $temps) {
    $temps_ms = $temps * 1000;
?>

    <script type="text/javascript">
        <!--
            function redirect() {
                window.location='<?php echo $url; ?>'
            }
           
            setTimeout('redirect()','<?php echo $temps_ms; ?>');
        -->
    </script>
   
<?php
}
?>

par phpdog » 23 déc. 2007, 13:51

Oui je l'ai créer, et oui il se trouve dans le même répertoire

j'y est mis ca:

Code : Tout sélectionner

<?php function redirect ($url, $temps) { $temps_ms = $temps * 1000; ?> <script type="text/javascript"> <!-- function redirect() { window.location='<?php $url ?>' } setTimeout('redirect()','<?php $temps_ms ?>'); --> </script> <?php } ?>

par Kaoteknik » 23 déc. 2007, 13:50

As-tu bien créé le fichier contenant la fonction de redirection ? Et si oui, se trouve-t-il dans le même répertoire que le script du formulaire ?

par phpdog » 23 déc. 2007, 13:47

Ben c'est ca:

Code : Tout sélectionner

<?php // On récupére le contenu des formulaire dans des variables: $formMail = $_POST['mail']; $formNom = $_POST['nom']; $formPrenom = $_POST['prenom']; $formsociete = $_POST['societe']; $formactivite = $_POST['activite']; $formtelephone = $_POST['telephone']; $formCommentaire = $_POST['commentaire']; // On inclut le fichier contenant la fonction de redirection include ("redirection.php"); // On définit l'URL de redirection if ($_SERVER['HTTP_REFERER']) { $url_redirect = $_SERVER['HTTP_REFERER']; } else { $url_redirect = "index.htm"; } if(!empty($formPrenom) && !empty($formNom) ){ $formCommentaire = htmlentities($formCommentaire); // On créer une unique variable contenant toutes les autres varaible du formulaire: $message = "$formNom $formPrenom vous contact via votre formulaire.\n \n Société: $formsociete \n Activité: $formactivite \n Telep $formtelephone \n Mail: $formMail \n \n message : \n $formCommentaire"; if( mail('[email protected]','Contact via formulaire ART ANIM',$message) && mail('[email protected]','Contact via formulaire ART ANIM',$message) ){ echo 'les informations on bien été envoyé!'; redirect($url_redirect, 10); // On effectue la redirection en fonction de l'url passée en argument et du temps (ici 10 micro-secondes) } else{ echo 'une erreur est survenu lors de l\'envoi du message'; redirect($url_redirect, 10); // Même méthode lorsqu'un autre message apparaît } } else{ echo 'il y a des champs vide echo merci de remplir les champs nom, prenom'; redirect($url_redirect, 10); // Encore pareil... ;) } ?>

par Kaoteknik » 23 déc. 2007, 13:27

Plutôt que de mettre un redirect dans chaque condition, tu peux te contenter d'en mettre un unique à la fin du script ;)
Oui tu as raison, il est possible de simplifier. :oops:

Sinon phpdog, qu'as-tu fais au juste (poste ton code pour qu'on puisse y voir plus clair) ? Et quel message d'erreur as-tu, si toutefois il y en a un ?

par zeus » 23 déc. 2007, 13:16

Merci de ta participation Kaoteknik, mais ce n'est pas aider phpdog que de lui donner une réponse tout faite.

De plus, dans ta solution, tu remarqueras que, dans tous les cas, on va passer par la fonction redirect().
Plutôt que de mettre un redirect dans chaque condition, tu peux te contenter d'en mettre un unique à la fin du script ;)