formulaire self

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 : formulaire self

Re: formulaire self

par dix2 » 02 déc. 2012, 13:10

salut,

il faut déclarer le formulaire comme ceci :
<form name="nom_du_formulaire" action="javascript:void%200" accept-charset="utf-8" onsubmit="envoiFormulaire(les valeurs des éléments du formulaire);return false;">
il faut également créer la fonction javascript envoiFormulaire() qui va effectuer une requête ajax
en ajax, tu n'as pas un rechargement complet de la page, la requête s'effectue en arrière-plan

@+
dix2

Re: formulaire self

par Saian » 02 déc. 2012, 13:07

Salut, en fait le message ne s'affiche pas véritablement sur une nouvelle page, c'est juste qu'il y a un grand if else qui englobe d'une part (si le formulaire est envoyé) le traitement d'envoi du formulaire et d'autre part (sinon) le formulaire.
Donc si tu veux que le formulaire s'affiche tout le temps, tu peux enlever le else. Pour la peine les messages apparaitront au dessus du formulaire.
Si tu veux les glisser sous le textarea du message, au lieu de faire des echo, stocke les dans des variables ($error et $success par exemple) et à l'endroit voulu, test si la variable existe (isset) et si c'est le cas affiche la (echo).
Et pour la sécurité en l’occurrence, je me contenterai de tester que le mail en est bien un (tu peux trouver des expressions régulières pour ça) et que les champs sont bien remplis.

formulaire self

par bb64 » 02 déc. 2012, 09:45

Bonjour

J'essaie d'adapter un formulaire php pris sur le net, je souhaiterai que les messages d'erreur ou d'envoi soit insérer sous le message au lieu d'apparaitre sur une nouvelle page, après plusieurs tentatives je bloque :cry:

Sans passer par un catcha, quels sont les possibilités de protéger au mieux ce formulaire ?

Merci de me donner un p'tit coup de main ou quelques pistes.

Bon dimache

BB

Code : Tout sélectionner

<?php if(isset($_POST['email']) and isset($_POST['sujet']) and isset($_POST['message'])) { $destinataire = '[email protected]'; $email = htmlentities($_POST['email']); if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&','&',$email))) { $sujet = 'Contact: '.stripslashes($_POST['sujet']); $message = stripslashes($_POST['message']); $headers = "From: <".$email.">\n"; $headers .= "Reply-To: ".$email."\n"; $headers .= "Content-Type: text/plain; charset=\"utf-8\""; if(mail($destinataire,$sujet,$message,$headers)) { echo "<strong>Votre message a bien &eacute;t&eacute; envoy&eacute;.</strong>"; } else { echo "<strong style=\"color:#ff0000;\">Une erreur c'est produite lors de l'envois du message.</strong>"; } } else { echo "<strong style=\"color:#ff0000;\">L'email que vous avez entr&eacute; est invalide.</strong>"; } } else { ?> <form action="" method="post"> <fieldset> <legend>Formulaire de contact</legend> <label for="email" style="display:inline-block;width:100px;"><strong>Votre Email:</strong></label> <input type="text" name="email" id="email" /><br /> <label for="sujet" style="display:inline-block;width:100px;"><strong>Sujet:</strong></label> <input type="text" name="sujet" id="sujet" /><br /> <label for="message"><strong>Message:</strong></label><br /> <textarea cols="70" rows="4" name="message" id="message"></textarea><br /> <input type="submit" value="Envoyer" /> </fieldset> <?php } ?> </form>