我正在创建会话变量,每次登录都是$ _SESSION ['usr']& $ _SESSION [ 'PSW']。当我退出时,我用这段代码摧毁它们:
<?php
session_start();
session_destroy();
if(count($_SESSION) == 0)
{
$_SESSION=array();
session_destroy();
}
header("Location:home.php");
?>
我要做的是限制只为登录用户使用的部分页面,所以我尝试使用这段代码:
<?php if(!$_SESSION['usr']){header('Location:home.php');} ?>
我不明白为什么它不起作用,因为它完全有道理但是没有人知道为什么?谢谢你的帮助......
答案 0 :(得分:1)
你不应该试图破坏会话两次。
应该是:
<?php
session_start();
$_SESSION = array();
//Session Cookie
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
session_destroy();
?>
http://php.net/manual/en/function.session-destroy.php
无需检查是否设置了某些内容。 检查应该是:
<?php if(!isset($_SESSION['usr'])) {
//header() - see below
} ?>
位置必须是绝对网址(例如http://www.mydomain.com/home.php
)