【问题标题】:How to pass session variables when header redirects? loosing session variables during the process of redirection标头重定向时如何传递会话变量?在重定向过程中丢失会话变量
【发布时间】:2014-01-04 23:14:25
【问题描述】:

会话变量

<?php session_start(); 
error_reporting(-1);
if (!isset($_SESSION)){
}
$total_amt=$_POST['total_amt'];
$total_seats=$_POST['total_seats'];
$seat=$_POST['seat'];
$boarding_point=$_POST['boarding_point'];
$submit=$_POST['chksbmt'];
$_SESSION['total_amt']=$total_amt;
$_SESSION['total_seats']=$total_seats;
$_SESSION['seat']=$seat;
$_SESSION['boarding_point']=$boarding_point;
$_SESSION['chksbmt']=$submit;
?>

<?php
$serial_no = 1;
$total_seats = $_SESSION['total_seats']; 
$seats=explode(',', rtrim($total_seats, ","));
foreach ($seats as $seat) { ?>
<tr>
<td style="text-align:center;"> <?php echo $serial_no++; ?></td>
  <td style="text-align:center;"><?php echo $seat; ?> </td>

等等..

登录分区

<ul class="top">
         <li><a href="registration.php" class="about">Registration</a>
        </li>
       <?php if(!isset($_SESSION['login_user'])) { ?>
        <li class="hover"><a href="#" onClick="revealModal('modalPage')">Login</a>
        </li>
         <?php } else {?>
        <li class="hover"><a href="logout.php">Logout</a></li>
    <div style="color:#00CC66;">Welcome <?php echo $_SESSION['login_user'];     ?></div>
         <?php } ?>
              </ul>

注销.php

<?php session_start();
session_destroy(); 
header('Location:'.$_SERVER['HTTP_REFERER']);  
exit;  
?>  

当我从我的页面注销时,它必须被重定向并且在这个过程中我失去了我的会话变量。这是在重定向后保持变量不变的任何过程..在页面重定向后m得到未定义的索引错误..任何帮助.. ??提前谢谢你

【问题讨论】:

  • 为什么会有反对票?你们甚至读过这个问题吗?
  • 非常感谢你...@Letmesee 我也想知道这个

标签: php session redirect logout


【解决方案1】:

您正在销毁注销页面上的整个会话。而您只需要取消设置相关的会话密钥。

类似的,

session_start();
unset($_SESSION['login_user']); //session_destroy(); 
header('Location:'.$_SERVER['HTTP_REFERER']);  
exit;  

【讨论】:

  • 嘿,谢谢 :) 但他们有什么方法可以只刷新页面而不提供这 1 个标头('Location:'.$_SERVER['HTTP_REFERER']);
  • 是的,我也给了会话计数......它在某些情况下工作,重定向我的会话变量丢失后
【解决方案2】:

而不是使用session_destroy();
你应该使用unset($_SESSION['login_user']);

它会将会话中变量的值更改为null并且你会不要丢失你的变量session_destroy() 完全破坏会话,然后您无法访问该变量。
您可以使用 var_dump
检查它们之间的区别,例如:- session_destroy(); var_dump($_SESSION['login_user']);
and
unset($_SESSION['login_user']); var_dump($_SESSION['login_user']);
AND 在您的代码

if (!isset($_SESSION)){
}

您不应将其留空。我认为您忘记在此块中包含以下代码

【讨论】:

  • 谢谢 .. 工作 :) 但他们是否只刷新页面而不提供此 1 标头('Location:'.$_SERVER['HTTP_REFERER']);
  • 您可以使用 $_SERVER['PHP_SELF']; 刷新页面
  • 嘿,我刚刚看完了你的最后一个答案,你说我不应该在这个地方留空 if (!isset($_SESSION)){ ...我应该写什么??
猜你喜欢
  • 2012-07-08
  • 1970-01-01
  • 2012-02-25
  • 2023-03-29
  • 2010-12-24
  • 2014-08-14
  • 2019-07-09
相关资源
最近更新 更多