Retour page précédente php [Résolu/Fermé]

Signaler
Messages postés
68
Date d'inscription
mercredi 2 décembre 2015
Statut
Membre
Dernière intervention
9 novembre 2020
-
Messages postés
68
Date d'inscription
mercredi 2 décembre 2015
Statut
Membre
Dernière intervention
9 novembre 2020
-
Bonjour,

Bonjour à tous,

j'utilise le script ci-dessous pour envoyer des demandes de réservation vers mon adresse mail.
Le script vérifie correctement que le simili captcha est OK.
S'il est OK il envoie correctement la réservation à mon adresse, et retourne à la page du site d'où on a accédé au formulaire.
Si le captcha n'est pas Ok, une alerte le signale et on revient bien au formulaire où tous les champs ont gardé leur valeur sauf le captcha qu'il faut rectifier. Après rectification la réservation est correctement envoyée.

Le problème est que si il y a eu une erreur de captcha, lors de l'envoi du message on ne revient pas à la page du site d'où on a accédé au formulaire, mais au formulaire lui-même : javascript:history.go(-2), alors qu'il faudrait faire javascript:history.go(-3)
En fait il faudrait que je puisse ajouter au history.go le nombre de fois où il y a erreur de captcha, ou stocker quelque part l'adresse de la page du site d'où on a accédé au formulaire.

J'ai essayé un $_SERVER['HTTP_REFERER'] qui récupère bien l'adresse de la page précédente, le problème est que lorsqu'on revient au formulaire, après erreur de captca, la page précédente devient le formulaire lui-même.
Il faudrait que puisse stocké cette adresse quelque part dans le script où elle n'est pas mise à jour lors d'un retour au formulaire suite à une erreur.

Par avance merci

Fifi




if (isset($_POST['submit'])) {

//récupération des variables
 $nom=htmlspecialchars($_POST['nom']);
 $prenom=htmlspecialchars($_POST['prenom']);
 $email=htmlspecialchars($_POST['email']);
 $numcell=htmlspecialchars($_POST['numcell']);
 $datearr=htmlspecialchars($_POST['datearr']);
 $datedep=htmlspecialchars($_POST['datedep']);
 $nombpers=htmlspecialchars($_POST['nombpers']);
 $jone=htmlspecialchars($_POST['jone']);
 $message=htmlspecialchars($_POST['message']);


//Déclaration du mail au format texte 
 $corps .= "Nom : ".$nom."\n";
 $corps .= "Prénom : ".$prenom."\n";
 $corps .= "E-mail : ".$email."\n";  
 $corps .= "Cell : ".$numcell."\n"; 
 $corps .= "Arrivée : ".$datearr." à 14h00"."\n";
 $corps .= "Départ : ".$datedep." à 11h30"."\n";
 $corps .= "Nombre de personnes : ".$nombpers."\n";
 $corps .= "Jone : ".$jone."\n";
 $corps .= "Message : "."\n".$message."\n";


//envoi du mail /**/

if ($jone!=8)
{
echo "<script type=\"text/javascript\"> alert(\"Le test anti-robot est faux, vérifiez.\");</script>";

}
else
{

if (mail("monadresse@gmail.com","Résa ERI",$corps))
  {
        echo "<script type=\"text/javascript\"> alert(\"Votre demande de réservation a été envoyée. La réservation vous sera confirmée dans les 24 heures.\"); window.location = \"javascript:history.go(-2)\";</script>";
  }
  else
  {
        echo "<script type=\"text/javascript\"> alert(\"Une erreur c'est produite lors de l'envoi de l'email.\"); </script>";
  }
}

}

?>


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="css/forms.css" />
</head>

<body style="background-image:URL('img/fond2r.jpg');background-size:100% 100%;background-attachment:fixed;background-repeat:no-repeat;background-position:top,left;">
<br><br>
<table width=900px align=center bgcolor=#ececec style="background-color: rgba(255, 255, 255,0.95);border-left:solid 1px navy; border-radius:5px; padding:0 20px 5px 20px;box-shadow:2px 5px 10px;">
  <tr height=50px>
  <td align=justify style="padding:5px 0 0 0;"><t1>Pour réserver remplissez le formulaire et cliquez sur "Envoyer".</t1></td>
  </tr>
  <tr>
  <td align=justify>
<form method="post" action="">
 <p>
  <!-- <label for="subject">Objet : </label> -->
  <input type="hidden" name="subject" value="Contact ERI" />
 </p>


 <table width=100%>
<!-- ligne 1 -->
 <tr>
 <td>
    <p>
        <label for="nom">Nom :</label><br>
        <input type="text" name="nom" id="nom" value="<?=$nom; ?>" required placeholder="Obligatoire" size="40"  />
    </p>
 </td>
 <td>
    <p>
        <label for="prenom">Prénom :</label><br>
        <input type="text" name="prenom" id="prenom"  value="<?=$prenom; ?>" required placeholder="Obligatoire" size="40"  />
    </p>
 </td>
 </tr>

<!-- ligne 2 -->
 <tr >
 <td style="padding:8px 0 0 0;">
    <p>
        <label for="email">E-mail :</label><br>
        <input type="email" name="email" id="email"  value="<?=$email; ?>" required placeholder="Obligatoire" size="40" />
    </p>
 </td>
 <td style="padding:8px 0 0 0;">
    <p>
        <label for="numcell">Cell :</label><br>
        <input type="text" name="numcell" id="numcell" value="<?=$numcell; ?>" required placeholder="Obligatoire" size="40"  />
    </p>
 </td>
 </tr>

<!-- ligne 3 -->
 <tr>
 <td style="padding:8px 0 0 0;">
    <p>
        <label for="datearr">Date d'arrivée :</label><br>
        <input type="text" name="datearr" id="datearr" value="<?=$datearr; ?>" required placeholder="Obligatoire-Format JJ/mm/aa" size="30"  /> à 14h00
    </p>
 </td>
 <td style="padding:8px 0 0 0;">
    <p>
        <label for="datedep">Date de départ :</label><br>
        <input type="text" name="datedep" id="datedep" value="<?=$datedep; ?>" required placeholder="Obligatoire-Format JJ/mm/aa" size="30"  /> à 11h30
    </p>
 </td>
 </tr>

<!-- ligne 4 -->
 <tr>
 <td valign=top align=justify style="padding:25px 15px 0 0;">
    <p>
        <label for="nombpers">Nombre de personnes : </label>
        <input type="text" name="nombpers" id="nombpers" value="<?=$nombpers; ?>"  required placeholder="Obligatoire" size="5" style="text-align:center;" /><br><br><br>
  <b>Afin de vérifier que vous n'êtes pas un robot, veuillez additionner le second et l'avant dernier chiffre de la liste ci-dessous et inscrire le résultat dans la case jaune.</b>
    </p>
    <p>
        <label for="jone"><b>9, 1, 5, 6, 2, 8, 4, 7, 3. </b></label>
        <input type="text" name="jone" id="jone"  required placeholder="Obligatoire" size="5" style="text-align:center;background-color:#ff0;" /><br><br>
    </p>
 </td>
 <td style="padding:8px 0 0 0;">
   <p>
       <label for="message">Commentaires ou demandes particulières :</label><br />
       <textarea name="message" id="message"  placeholder="Facultatif" style="width:400px; height:180px;padding:5px 10px 5px 10px;"><?=$message; ?></textarea>
   </p>
 </td>
 </tr>
 </table>

 <input type="hidden" name='submit'/> 
 <input type="submit" value="Envoyer" style="width:100px;" />
 <input type="reset" value="Reset" style="width:100px;" />
 <input type="button" value="Annuler" style="width:100px;" onclick="javascript:history.go(-1)" />
</form>
  </td>
  </tr>
</table>


</body>
</html>


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.


A voir également:

8 réponses

salut,

Et en essayant d'ajouter un exit; pour stoper le script

if ($jone!=8)
{
echo "<script type=\"text/javascript\"> alert(\"Le test anti-robot est faux, vérifiez.\");</script>";
exit;
}
non oublie ce que j'ai écris plus haut c'est cela qu'il faut ajouter

if (mail("***@***","Résa ERI",$corps))
  {
echo'<script type="text/javascript">
alert("Votre demande de réservation a été envoyée. La réservation vous sera confirmée dans les 24 heures");
location="https://tonsite.com";
</script>'; 
  }
Messages postés
68
Date d'inscription
mercredi 2 décembre 2015
Statut
Membre
Dernière intervention
9 novembre 2020

Bonjour kezaco

merci du coup de main.
le "location ="http://monsite.com"; " est ce que j'ai utilisé pour le formulaire de contact, parce qu'on ne peut y accéder que depuis une seule page du site.

Dans le cas présent, comme on peut arriver sur le formulaire de réservation depuis trois pages différentes du site ça n'est pas utilisable car je voudrais que lorsque la réservation est partie, le visiteur revienne sur la page de départ.

fifi
peut être faudrait il enregistrer la variable "$_SERVER['HTTP_REFERER']" dans une "$_SESSION" et l'inclure dans la page du formulaire et ressortir quand le dit formulaire est validé et ok
dans les 3 pages de départ mettre

session_start();
$_SESSION['referer'] = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";



au début du script du formulaire après

<?php

Pour démarrer la session :

session_start();


et la redirection

if (mail("***@***","Résa ERI",$corps))
  {
echo'<script type="text/javascript">
alert("Votre demande de réservation a été envoyée. La réservation vous sera confirmée dans les 24 heures");
location="'.$_SESSION['referer'].'";
</script>';
  
  
  }
script modifié, il y avait une erreur dsl
Messages postés
68
Date d'inscription
mercredi 2 décembre 2015
Statut
Membre
Dernière intervention
9 novembre 2020

Bonsoir kezaco

j'avais pensé à un truc comme ça, sans aller aussi loin dans l'élaboration. Le problème est qu'il faut que je passe les pages concernées de .html à .php et donc que je refasse tous les liens qui pointent vers ces pages.. J'en avais vraiment pas envie :-(
Mais il parait difficile de l'éviter.
Fifi
alors sans changer les extensions il suffit de passer les données par l'url

tu change le lien de tes trois pages par

<a href="https://tonsite.com/formulaire_de_reservation.php?page=la_page_en_cours.html" rel="nofollow noopener noreferrer" target="_blank">formulaire</a>


et la page du formulaire partie php:

<?php

if (isset($_GET['page'])){

if (isset($_POST['submit'])) {

//récupération des variables
 $nom=htmlspecialchars($_POST['nom']);
 $prenom=htmlspecialchars($_POST['prenom']);
 $email=htmlspecialchars($_POST['email']);
 $numcell=htmlspecialchars($_POST['numcell']);
 $datearr=htmlspecialchars($_POST['datearr']);
 $datedep=htmlspecialchars($_POST['datedep']);
 $nombpers=htmlspecialchars($_POST['nombpers']);
 $jone=htmlspecialchars($_POST['jone']);
 $message=htmlspecialchars($_POST['message']);


//Déclaration du mail au format texte 
 $corps .= "Nom : ".$nom."\n";
 $corps .= "Prénom : ".$prenom."\n";
 $corps .= "E-mail : ".$email."\n";  
 $corps .= "Cell : ".$numcell."\n"; 
 $corps .= "Arrivée : ".$datearr." à 14h00"."\n";
 $corps .= "Départ : ".$datedep." à 11h30"."\n";
 $corps .= "Nombre de personnes : ".$nombpers."\n";
 $corps .= "Jone : ".$jone."\n";
 $corps .= "Message : "."\n".$message."\n";


//envoi du mail /**/

if ($jone!=8)
{
echo "<script type=\"text/javascript\"> alert(\"Le test anti-robot est faux, vérifiez.\");</script>";

}
else
{

if (mail("***@***","Résa ERI",$corps))
  {
echo'<script type="text/javascript">
alert("Votre demande de réservation a été envoyée. La réservation vous sera confirmée dans les 24 heures");
location="http://tonsite.fr/'.$_GET['page'].'";
</script>'; 
  }
  else
  {
        echo "<script type=\"text/javascript\"> alert(\"Une erreur c'est produite lors de l'envoi de l'email.\"); </script>";
  }
}

}
}
?>
Messages postés
68
Date d'inscription
mercredi 2 décembre 2015
Statut
Membre
Dernière intervention
9 novembre 2020

Bonjour kezaco

excuse le délai de réponse, mais "un peu" de boulot, et plus de temps pour mon site.
Donc j'ai fini par utiliser ta solution avec la session en modifiant les liens de html à php (en fait il n'y en avait que 9)
J'ai essayé la méthode get, mais insuccès. Comme l'autre fonctionne, tout va bien.
Je mets le sujet en résolu
merci encore
fifi