我正在使用会话变量进行身份验证,据我所知,即使加载了新页面,会话变量也应该存储在服务器上。 我使用以下代码:
<?php
session_start();
echo $_POST['path'];
if($_POST['path']=="index")
{
$_SESSION['rightPath']=1;
if(isset($_SESSION['rightPath']))
echo "it is set";
?>
<script type="text/javascript">parent.location='UI.php'</script>
<?php
}
else
{?>
<script type="text/javascript">parent.location='index.php'</script>
<?php
}
?>
这里这个isset函数告诉我变量已经设置但是在下一页中ui.php是不是给了我相同的结果。
<?php
if(!isset($_SESSION['rightPath']))
{
echo "it not is set";?>
<?php }
?>
这是ui.php页面代码段。这里if语句正在执行。
我做错了什么?
答案 0 :(得分:5)
你需要在这里开始会议
<?php
session_start();
if(!isset($_SESSION['rightPath']))
{
echo "it not is set";?>
<?php }
?>
答案 1 :(得分:3)
您在UI.php中没有开始会话。代码应该是这样的,顶部是session_start
:
<?php
session_start();
if(!isset($_SESSION['rightPath']))
{
echo "it not is set";?>
}
?>
session_start()创建会话或恢复当前会话。因此,在您之前创建会话时,除非您在打算使用会话变量的每个页面上再次执行session_start()
,否则不会恢复。