重定向到感谢页面后SESSION值没有传递

我试图通过$email字段来感谢您在用户提交查询表单后重定向后出现的页面。

它是一个两步查询表格,感谢您的页面是最后一页。

似乎SESSION在感谢页面上生效,但值丢失了。 我想在感谢页面上将$email字段发送到iframe。 请让我知道会话ID出错的地方?

以下是代码:

第1步:小型咨询表

  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 = ''; $message .= ''; $message .= ""; if($surname != ''){ $message .= ""; } $message .= ""; $message .= ""; $message .= ""; $message .= "
First Name: " . strip_tags($fname) . "
Surname: " . strip_tags($surname) . "
Phone: " . strip_tags($phone) . "
Amount to Finance: " . strip_tags($finamount) . "
Loan Type: " . strip_tags($sel_loantype) . "
"; $message .= ""; $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步代码:

    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步:谢谢页面(此页面有以下代码)

   

 session_set_cookie_params(0); 

在你之前

 session_start(); 

您还可以使用URL在页面之间传递SID (会话ID),以确保它在转换过程中不会丢失。

 url: 'http://test.com.au/quick-quote/car-finance/quickquote-one.php?', 

 window.location.href = "http://www.test.com.au/thank-you?"; 

您正在丢失会话,因为您将浏览器发送到下一个URL而没有相对路径,而是一个完全限定的域。 这是一种安全措施,可防止会话ID被无意中发送到错误的服务器。

另一个小解决方案是使用相对路径,如/page.php而不是http://www.domain.com/page.php

在这里阅读更多(PHP手册)

在第4步中你的设置

 $_SESSION['user_email'] 

再次。 如果表单已刷新,那么您的post为空,并且您使用空值覆盖会话。 尝试从步骤4中删除它,然后离开。

   

如果未设置会话,您也会尝试回显会话电子邮件值。 如果会话实际设置,我认为这不会起作用..

我认为如果所有页面都相互连接,最好在一个页面中启动会话并访问所有会话变量。 这将是我们创建登录页面的一些事情。 当用户登录捕获时会在会话中显示所需的值,即使在刷新后也可以通过应用程序访问。

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

在哪里你需要变量你可以像这样使用

 $username=$_SESION['user']; 

我认为这将在每个页面中每次都有效,而不是启动会话。 希望能帮助到你