Значение SESSION не передается после перенаправления на страницу с благодарностью

Я пытаюсь передать поле $email чтобы поблагодарить страницу, которая появляется после перенаправления, когда пользователь отправляет форму запроса.

Его двухэтапная форма запроса с благодарностью за вашу страницу.

Кажется, что СЕССИЯ живет на странице благодарности, однако значения теряются. Я хотел бы получить поле $email опубликованное на странице благодарности, в iframe. Пожалуйста, дайте мне знать, где именно идентификатор сессии идет не так?

Вот коды:

Шаг 1: небольшая форма запроса

  <?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 = 'testemail@gmail.com'; $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; }*/ } } ?> 

Шаг 2 Код:

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

Шаг 3: приведенная выше страница отправляет данные в скрипт обработки quickquote-one.php, который имеет код ниже.

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

Шаг 4: благодарю вас (эта страница имеет код ниже)

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

Добавить

 session_set_cookie_params(0); 

перед вашим

 session_start(); 

Вы также можете передать идентификатор SID (идентификатор сеанса) между страницами, используя URL-адрес, чтобы убедиться, что он не потерян при переходе.

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

а также

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

Вы теряете сеанс, потому что вы отправляете браузер на следующий URL-адрес без относительного пути, а вместо этого – полностью квалифицированный домен. Это мера безопасности для предотвращения непреднамеренного отправки идентификаторов сеансов на неправильный сервер.

Другим небольшим решением было бы использовать относительные пути, такие как /page.php вместо http://www.domain.com/page.php

Подробнее здесь (Руководство по PHP)

На шаге 4 ваша настройка

 $_SESSION['user_email'] 

еще раз. Если форма обновилась, то ваш пост пуст, и вы перезаписываете сеанс с пустым значением. Попробуйте удалить его с шага 4 и просто уйти.

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

Кроме того, вы пытаетесь повторить свое значение электронной почты сеанса, если сессия НЕ установлена. Я не думаю, что это сработает, если сеанс действительно установлен.

я думаю, что лучше начать сеанс на одной странице и получить доступ ко всем переменным сеанса, если все страницы подключены друг к другу. это будет нечто вроде создания страницы входа. Когда пользователь регистрирует захват alll требуемые значения в сеансе и может быть доступен через приложение даже после обновления.

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

из этого запроса мы можем легко получить переменные сеанса.

  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']; } 

где вам понадобится переменная th, которую вы можете использовать так

 $username=$_SESION['user']; 

Я думаю, что это будет работать вместо стартаза каждый раз на каждой странице. Надеюсь, поможет