会话变量(种类)不加载
我使用会话变量来跟踪登录信息。 特别是用户是否登录(布尔$ _SESSION [“loggedin”])和他们的用户名(字符串$ _SESSION [“用户名”])。
主页有一个导航栏,根据用户是否登录,通过引用$ _SESSION [“loggedin”]显示一组不同的链接。 除了用户在登录认证后被重定向到主页时,这在任何情况下都适用。 如果我重新加载主页,它并不重要,它仍然显示错误的链接集。 ..但是,如果然后转到登录页面(当$ _SESSION [“loggedin”== == true时重定向到主页),当它将我发回主页时,导航显示正确。 我的所有网页都以开始
这是登录成功后login.php的重定向:
elseif ($phash === crypt($pword,$phash)){
$_SESSION["loggedin"]=true;
$_SESSION["username"]=$username;
header("Location: index.php");
die();
}
这是login.php中的重定向代码,用于用户已经登录:
<?php
session_start();
if ($_SESSION["loggedin"] == true){
header("Location: index.php");
die();
}
这是显示代码:
<?php if ($_SESSION["loggedin"]==true){
echo "<li><a href='logout.php'> Logout </a></li>";
//...several similar echoes...
}
else{
echo "<li><a href='login.php'> Login </a></li>";
//...several similar echoes...
}
我很困惑,为什么login.php开头的一小段重定向代码在返回到index.php时会突然导致导航显示正确,我感觉有点不在我的联盟中。
..事实证明,如果我只是让index.php页面坐了30秒左右,然后刷新,它会正确显示。 我在页面中添加了一个var_dump(),并且当index.php显示不正确时,会话变量为NULL。 当我回来稍后刷新时,会话变量为true。
链接地址: http://www.djcxy.com/p/59735.html