【发布时间】:2012-06-28 04:13:06
【问题描述】:
我试图制作一个将操作设置为服务器 php self 的单页脚本,但是在运行脚本时,即使我输入了正确的密码,我也会得到“您必须提供密码”。我这样做对吗。请告诉我我的错误
登录.php
<?php
$pass = 'defense6';
if(isset($_POST['submit'])){
if(($_POST['password'] == $pass)) {
$_SESSION['password'] = md5($_POST['password']);
header('Location: index.php');
} else {
echo 'Password Invalid';
}
}
else {
echo 'You must supply a password.'.$_SESSION['password'] ;
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
Password: <input name="password" type="password" /><br/><br/>
:
<input type="submit" name="submit" value="Login" style="float:right;" />
<br/>
<p></p>
</form>
index.php
<?php
$pass = 'defense6';
if($_SESSION['password'] == md5($pass)) {}
else {header('Location: login.php');}
?>
【问题讨论】:
-
什么是
$_POST['submit']?因为如果您看到"You Must Supply a Password",that 是失败的 if 语句。您需要学习一些基本的调试技能并弄清楚程序流程如何通过您的脚本进行。尝试检查var_dump($_POST)。 -
您是否在所有使用会话变量的文件的开头调用session_start()?
-
对不起 meagar 但发生的事情是表单正在提交并重定向到索引但他们没有 session_start 所以它重定向回登录并出现没有帖子['submit']
-
它实际上包含表单找到提交然后重定向到索引的所有内容。由于他们没有 session_start 代码说 else {header('Location: login.php');}。然后重定向页面后不再有post数据并报错。
-
不要通过查找表单字段来检查帖子。这是不可靠的。使用
$_SERVER['REQUEST_METHOD'] == 'POST'。这是 100% 可靠的。