La valeur de la SESSION ne passe pas après la redirection vers la page de remerciement

J'essaie de passer $email champ $email pour vous remercier page qui apparaît après la redirection une fois que l'utilisateur soumet le formulaire de demande.

C'est un formulaire de demande de 2 étapes avec la page de remerciement qui est la dernière.

Il semble que la SESSION soit en direct sur la page de remerciement, mais les valeurs sont perdues. J'aimerais que le $email envoyé sur la page de remerciement à un iframe. S'il vous plaît laissez-moi savoir où exactement l'ID de la session va mal?

Voici les codes:

Étape 1: petit formulaire d'enquête

  <?php error_reporting(0); session_start(); require_once('validation.class.php'); if(isset($_REQUEST['btnSubmit']) == 'Next'){ $obj = new validation(); $obj->add_fields(trim($_POST['txt_fname']), 'req', 'Enter your first name.'); $obj->add_fields(trim($_POST['txt_contact']), 'req', 'Enter phone number.'); $obj->add_fields(trim($_POST['txt_finamount']), 'req', 'Enter the amount.'); $obj->add_fields(trim($_POST['sel_loantype']), 'req', 'Please select vehicle type.'); $error = $obj->validate(); if($error){ $error_msg = "".$error.""; $_SESSION['error_msgs'] = $error_msg; header("location:".$_SERVER['HTTP_REFERER'].""); exit(); }else{ $_SESSION['form1data'] = $_REQUEST; header("location: quick-quote.php"); exit(); /*$fname = trim($_REQUEST["txt_fname"]); $surname = trim($_REQUEST["txt_surname"]); $phone = trim($_REQUEST["txt_contact"]); $finamount = trim($_REQUEST['txt_finamount']); $sel_loantype = trim($_REQUEST['sel_loantype']); $message = '<html><body>'; $message .= '<table rules="all" width="100%" style="border:1px solid #666;" cellpadding="10">'; $message .= "<tr><td><strong>First Name:</strong> </td><td>" . strip_tags($fname) . "</td></tr>"; if($surname != ''){ $message .= "<tr><td><strong>Surname:</strong> </td><td>" . strip_tags($surname) . "</td></tr>"; } $message .= "<tr><td><strong>Phone:</strong> </td><td>" . strip_tags($phone) . "</td></tr>"; $message .= "<tr><td><strong>Amount to Finance:</strong> </td><td>" . strip_tags($finamount) . "</td></tr>"; $message .= "<tr><td><strong>Loan Type:</strong> </td><td>" . strip_tags($sel_loantype) . "</td></tr>"; $message .= "</table>"; $message .= "</body></html>"; $ToEmail = '[email protected]'; $EmailSubject = "GET A QUICK QUOTE from ".strip_tags($fname); $mailheader = "From: ".strip_tags($fname)."\r\n"; //$mailheader .= "Reply-To: ".$_REQUEST["txt_email"]."\r\n"; $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; $MESSAGE_BODY = $message; if(@mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader)){ $_SESSION['sucess'] = "Your message has been sent successfully."; $_SESSION['form1data'] = $_REQUEST; header("location: quick-quote.php"); exit; }else{ $_SESSION['sucess'] = "Sorry! Your message has not been sent."; $_SESSION['form1data'] = $_REQUEST; header("location: quick-quote.php"); exit; }*/ } } ?> 

Étape 2 Code:

  <?php error_reporting(0); session_start(); require_once('validation.class.php'); ?> <script type="text/javascript"> function submitToCRM() { $.ajax({ type: 'POST', url: 'http://test.com.au/quick-quote/car-finance/quickquote-one.php', data: $("#applynowform").serialize(), beforeSend: function () { $("#loadingimg").show(); }, success: function (){ //alert(data); window.location.href = "http://www.test.com.au/thank-you"; } }); 

Étape 3: la page ci-dessus envoie des données au script de traitement de formulaire quickquote-one.php qui a un code ci-dessous.

  <?php if(!isset($_SESSION)) { session_start(); } $_SESSION['user_email'] = $_POST['email']; 

Étape 4: page de remerciement (cette page a un code ci-dessous)

  <?php if(!isset($_SESSION)) { session_start(); $_SESSION['user_email'] = $_POST['email']; echo $_SESSION['user_email']; } ?> 

Ajouter

 session_set_cookie_params(0); 

Avant votre

 session_start(); 

Vous pouvez également passer le SID (ID de session) entre les pages à l'aide de l'URL pour vous assurer qu'il n'est pas perdu en transition.

 url: 'http://test.com.au/quick-quote/car-finance/quickquote-one.php?<?php echo htmlspecialchars(SID); ?>', 

et

 window.location.href = "http://www.test.com.au/thank-you?<?php echo htmlspecialchars(SID); ?>"; 

Vous perdez la session car vous envoyez le navigateur à la prochaine URL sans un chemin relatif, mais plutôt un domaine entièrement qualifié. Il s'agit d'une mesure de sécurité pour éviter que les ID de session ne soient envoyés par inadvertance au mauvais serveur.

Une autre petite solution serait d'utiliser des chemins relatifs comme /page.php au lieu de http://www.domain.com/page.php

Lire la suite ici (manuel PHP)

À l'étape 4, votre réglage

 $_SESSION['user_email'] 

encore. Si le formulaire a été actualisé, votre publication est vide et vous écrasez la session avec une valeur vide. Essayez de l'enlever de l'étape 4 et de partir.

  <?php if(isset($_SESSION['user_email']) && !empty($_SESSION['user_email'])) { echo $_SESSION['user_email']; } ?> 

Aussi, vous essayez de faire écho à votre valeur de courrier électronique si la session n'est PAS définie. Je ne pense pas que cela fonctionnera si la session est actuellement réglée …

Je pense qu'il vaut mieux démarrer une session en une seule page et accéder à toutes les variables de la session sans crainte si toutes les pages sont connectées l'une de l'autre. Ce sera comme si nous créions une page de connexion. Lorsque l'utilisateur ouvre une session de capture toutes les valeurs requises dans une session et peut être consulté à travers l'application, même après le rafraîchissement.

 $query = "SELECT Useid,UserName,AccountStatus, FullName FROM Users WHERE UserName = :UserName"; 

À partir de cette requête, nous pouvons facilement accéder aux variables de session.

  if($login_ok) { //for last visit $Month = 2592000 + time(); //this adds 30 days to the current time setcookie(AboutVisit, date("F jS - g:ia"), $Month); //last visit ends here. $_SESSION['user'] = $row['UserName']; $_SESSION['userid'] = $row['Useid']; $_SESSION['fullname'] = $row['FullName']; } 

Si jamais vous avez besoin de la variable, vous pouvez utiliser comme ça

 $username=$_SESION['user']; 

Je pense que cela fonctionnera au lieu de la startign session chaque fois dans chaque page. J'espère que cela aide