page1.php中:
<?php
session_start();
if ($_POST['password'] == "testpass")
$_SESSION['authenticated'] = true;
?>
使page2.php
<?php
session_start();
if (isset($_SESSION['authenticated']) && $_SESSION['authenticated'] == true) {
echo "Super secret stuff!";
}
?>
用户可以在没有超级安全密码的情况下进入吗?
答案 0 :(得分:15)
没有。 $ _SESSION变量中的数据存储在服务器上,无法从用户访问。
会话通过cookie与用户耦合。具有标识符(即,长随机字符串)的cookie被发送给用户以识别用户并将他链接到他的会话。如果其他人获得了访问此cookie的权限,他可以使用相同的代码来说明他是用户,并且这样他就可以在没有密码的情况下进入。
答案 1 :(得分:2)
会话只能从PHP代码修改,不像$_POST, $_GET, $_COOKIE
等
另外,我认为您可以使用empty()
来简化条件:
<?php
session_start();
if (!empty($_SESSION['authenticated']) {
echo "Super secret stuff!";
}
?>
答案 2 :(得分:2)
会话可以在不同的场合进行修改..见这 - &gt; Session Poisoning