在重定向请求上没有设置会话


Session is not being set on redirect request

问题是:在页面重定向后,会话没有被设置。看看我的代码:

login。

<?php
session_start();
$pg=$_SERVER["REQUEST_URI"];
$pg=substr($pg,0,11);
$_SESSION['pg']=$pg;
?>
<form action='test.php'>
...
...
</form>

test.php

<?php
session_start();
$pg=$_SESSION['pg'];
if(some_condition){
    echo "<script>";
    echo "window.location='".$pg."'";
    echo "</script>";
}
?>

第一次,它工作正常,它重定向到login.php。在第一次重定向(test.php到login.php)之后,会话没有再次设置&所以之后没有重定向。

谁能告诉为什么会话后不设置重定向?

您在$_SERVER['REQUEST_URI']中使用substr, $_SERVER['REQUEST_URI']返回/url.php,而不是http://server.com/url.php,所以重做您的substr函数,它应该工作。

不知何故它仍然删除一个会话,仍然不能得到原因。试着设置一个cookie &使它与所需的页面一致。

if($_COOKIE['loginpage']!='/test.php'){
    $pg=$_SERVER["REQUEST_URI"];
    $pg=substr($pg,0,9);
    setcookie('loginpage',$pg,false,'/');
}

由于cookie在所有两个/三个页面上都是持久的,所以它工作得很好。谢谢大家的帮助,谢谢:)