8791 sujets

Développement web côté serveur, CMS

Bonjour à tous, Smiley biggrin

Je viens de créer un petit formulaire en php avec vérification des champs et redirection vers la page d'accueil.

Quand tous les champs sont bien remplis ça ne pose aucun problème, le mail est bien envoyé et le visiteur est bien redirigé vers la page d'accueil. Smiley cligne

Par contre quand un champ est manquant, la fenêtre d'alerte apparait indiquant bien "veuillez remplir tous les champs" et si on clique sur Ok le visiteur reste figé sur la page de traitement mail.php. Smiley bawling

J'ai cherché un peu dans tous les sens pour trouver une commande permettant le retour en arrière après avoir cliqué sur ok, mais sans succès. Smiley fache

Si vous avez une idée lumineuse ou une piste de recherche c'est avec grand plaisir.
Merci d'avance pour votre aide.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/plain; charset=UTF-8" />
</head>
<?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 = 'mail@alamaison.com';
 
// 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>";
 }
else
{
    mail($to, $subject, utf8_decode($msg), utf8_decode ($headers));
header('Location:  http://www.monsite.com/');
 
}
?>
</html>

Modifié par paikan (18 Jul 2012 - 13:56)
Suffit de modifier ici,
après
a écrit :
echo "<script>alert(\"Veuillez remplir tous les champs\")</script>";


if (empty($nom) || empty($prenom) || empty($nation) || empty($telephone) || empty($email))
{   
 echo "<script>alert(\"Veuillez remplir tous les champs\")</script>";
 header("Location: cette_page_ici.php");
 exit;
 }
else
{
    mail($to, $subject, utf8_decode($msg), utf8_decode ($headers));
header('Location:   http://www.monsite.com/');
 
 
}

Modifié par jytest (18 Jul 2012 - 14:13)
Je te remercie pour ton aide jytest

Je viens d'effectuer des tests,
maintenant quand un champs est manquant et que je clic sur ok je suis automatiquement redirigé sur la page présente dans :
header("Location: contact2.php");


Le script n'est plus exécuté.
Merci beaucoup pour vos avis,
je pense donc que la solution ce trouve en JavaScript, j'ai trouvé cette solution sur le net mais chez moi ça marche pas vraiment:

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/');
 
 
}
?>