我执行以下操作来设置会话,这是因为回显出现。但是当我进入下一页或另一页时,会话不在那里?我做错了什么?
$session_start();
if ($username==$dbusername&&$password==$dbpassword)
{
echo"<b>Login Successful</b><br><a href='systemadmin.html'><br>Click here to access the <strong>System Admin Page</strong></a>";
$_session['username']=$dbusername;
if($username == "admin")
{
$_session['admin'] = true;
}
我正在尝试使用以下内容来处理这些会话:
<?php
session_start();
if($_session['admin'] == true)
{
// do nothing
}else{
header( 'Location: home.html' ) ;
}
?>
更新
大写会话有效,但现在当我使用logout.php时会话没有被破坏
<?php
session_start();
session_destroy();
header("location: home.html");
?>
答案 0 :(得分:5)
$_session
应为=&gt; $_SESSION
。
http://php.net/manual/en/reserved.variables.session.php
第一个有效,因为您正在设置一个“正常”变量(可用于请求)。
<强>更新强>
销毁会话:
<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();
// Unset all of the session variables.
$_SESSION = array();
// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Finally, destroy the session.
session_destroy();
?>
http://php.net/manual/en/function.session-destroy.php#example-4368
另外,在进行重定向后,应始终使用exit();
以防止进一步执行脚本。
答案 1 :(得分:2)
PHP Server / Session /全局变量区分大小写。对于PHP,$_SESSION
与$_session
不是同一个变量,即使你用英语,它们似乎也是如此。您必须使用$_SESSION
而不是$_session
才能按预期访问PHP Session变量。
答案 2 :(得分:2)
你必须使用exit();在header()之后;因为脚本并不总是在用户重定向到新页面后立即结束。
答案 3 :(得分:0)
超全球的名称是大写字母$_SESSION
。尝试更改它,看看它是否有帮助。