【发布时间】:2013-04-26 19:21:20
【问题描述】:
您能否告诉我为什么我的会话设置无法正常工作?我在 index.php 文件中有一个简单的表单:
<?php
session_start();
$_SESSION['uid'] = 'test';
?>
<!DOCTYPE HTML>
<html>
<body>
<form method="POST" action="validate.php">
Password: <input type="text" name="name" value="" />
<input type="submit" value="Submit" />
</form>
</body>
</html>
我还有一个 validate.php 文件,如下所示:
<?php
session_start();
$err="You Have to Insert The Password to Get into Page";
if(($_POST['name']) == $_SESSION['uid']){
header ("Location: target.php");}
else{ echo $err; }
?>
最后target.php页面是这样的
<?php
session_start();
?>
<!DOCTYPE HTML>
<html>
<body>
<img src="session.jpg">
</body>
</html>
现在我的问题是,当我直接从浏览器地址栏(如 (..localhost/PHP/Session_3/validate.php) 运行 validate.php 或 target.php URL 时,我仍然可以访问目标页面! 你能告诉我为什么会这样吗?以及如何设置更好的 isset() 函数来防止这种情况发生? 感谢您的时间和 cmets
【问题讨论】:
-
如果您完全关闭浏览器程序,然后重新打开它,是否会发生这种情况?
$_SESSION设置为在您的浏览器会话期间持续。你可能想调查一下。 -
您永远不会清除会话变量 - 检查关闭 + 重新打开浏览器是否会改变任何内容
-
会话保存在浏览器中。所以,如果你最初打开 index.php,它会保留一段时间。
-
您需要设置注销来销毁会话。此外,如果会话仍然存在,您必须检查每个脚本。
-
感谢大家的完美提示。我正在检查所有这些
标签: php session session-variables