Redirection suite a la validation d'un 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 : Redirection suite a la validation d'un formulaire

Re: Redirection suite a la validation d'un formulaire

par moogli » 20 juil. 2012, 10:19

salut,

Soit tu fait la validation sur la même page que le formulaire afin de pré remplir simplement celui ci en cas d'erreur. (validation en haut de page avant l'affichage du formulaire).

Soit tu met le tableau post dans une variable de copie + un flag (url ou session) que tu test a l'affichage du formulaire (pense a bien supprimer ces infos de la session quand ton formulaire est validé ;)


@+

Re: Redirection suite a la validation d'un formulaire

par paikan06 » 20 juil. 2012, 09:01

Bonjour à tous, merci beaucoup xTG, ton code fonctionne parfaitement. =D>
Mon seul souci c'est que la fonction :
[javascript]window.location.href = 'contact.php';[/javascript]
renvoie directement sur la page contact.php vierge.

Existe t 'il une variante qui permet de revenir en arrière afin que le visiteur puisse remplir que les champs manquants ?

Très bonne journée à tous :D

Re: Redirection suite a la validation d'un formulaire

par xTG » 19 juil. 2012, 15:41

<?php
//...
if (empty($nom) || empty($prenom) || empty($nation) || empty($telephone) || empty($email))
{ 
?>
<script type="text/javascript">
  alert('Veuillez remplir tous les champs');
  window.location.href = 'contact.php';
</script>
<?php
}
else
{

Redirection suite a la validation d'un formulaire

par paikan06 » 19 juil. 2012, 13:17

Bonjour à tous,

Dans un premier temps je dois avouer que je ne suis pas du tout un As en php.
Je suis arrivé à réaliser un petit formulaire avec vérification des champs (empty), message d'alerte et envoie de mail.
Quand tous les champs sont remplis, tout fonctionne très bien.

Quand un champ est manquant, le message d'alerte est bien affiché mais quand je clique sur OK je reste figé sur la page de traitement (mail.php).
Je cherche dans tous les sens une fonctionnalité qui permet de revenir sur le formulaire afin de laisser le visiteur finir de le remplir.

Si vous avez une idée ou une piste de recherche, je vous en remercie d'avance,
très bonne journée :D
<?PHP
if (get_magic_quotes_gpc())
{
    $nom = stripslashes($_POST['nom']); 
    $email = stripslashes($_POST['email']);
    $nation = stripslashes($_POST['nation']); 
    $prenom = stripslashes($_POST['prenom']); 
    $telephone = stripslashes($_POST['telephone']); 
    $adresse = stripslashes($_POST['adresse']);
    $profession = stripslashes($_POST['profession']); 
    $statut = stripslashes($_POST['statut']); 
    $interet = stripslashes($_POST['interet']);
    $message = stripslashes($_POST['message']);  
} 
else
{  
    $nom = $_POST['nom'];
    $email = $_POST['email'];
    $nation = $_POST['nation']; 
    $prenom = $_POST['prenom']; 
    $telephone = $_POST['telephone']; 
    $adresse = $_POST['adresse'];
    $profession = $_POST['profession']; 
    $statut = $_POST['statut']; 
    $interet = $_POST['interet'];
    $message = $_POST['message'];  
 
$to = '[email protected]';
 
// Subject
$subject = 'Demande informations concernant mon site';
/////voici la version Mine 
$headers = "MIME-Version: 1.0\r\n"; 
 
$headers .='Content-Type: text/plain; charset="utf-8"'." ";
$headers .='Content-Transfer-Encoding: 8bit'; 

/* Construction du message */
$msg  = 'Bonjour,'."\r\n\r\n";
$msg .= 'Ce mail a été envoyé depuis le site monsite.com par '.$nom.' '.$prenom."\r\n\r\n";
$msg .= 'Voici le message qui vous est adressé:'."\r\n";
$msg .= '***************************'."\r\n";
$msg .= 'Le nom est :'.$nom."\r\n\r\n";
$msg .= 'Le prénom est :'.$prenom."\r\n\r\n";
$msg .= 'La nationalité est :'.$nation."\r\n\r\n";
$msg .= 'Le numéro de téléphone est :'.$telephone."\r\n\r\n";
$msg .= 'L adresse email est :'.$email."\r\n\r\n";
$msg .= 'L adresse de domiciliation est :'.$adresse."\r\n\r\n";
$msg .= 'Sa profession est :'.$profession."\r\n\r\n";
$msg .= 'Son statut est :'.$statut."\r\n\r\n";
$msg .= 'Son intérêt est :'.$interet."\r\n\r\n";
$msg .= 'Son message est :'.$message."\r\n\r\n";
$msg .= '***************************'."\r\n\r\n";
 
$headers = 'From: '.$nom.' '.$prenom.' <'.$expediteur.'>'."\r\n\r\n";}
/* Envoi de l'e-mail */
 
if (empty($nom) || empty($prenom) || empty($nation) || empty($telephone) || empty($email))
{   
 echo "<script>alert(\"Veuillez remplir tous les champs\")</script>";
?><script language="JavaScript">window.location.replace('contact.php');</script><?       // j'ai essayé mais ça ne fonctionne pas
 }
else
{
    mail($to, $subject, utf8_decode($msg), utf8_decode ($headers));
header('Location:  http://www.monsite.com/');
 
}
?>