我试图将POST请求的变量存储到会话中,因此每次单击页面上的某个位置时我都不需要发出POST请求。 我收到以下错误: 未定义的索引:第8,10,12行的密码 即使密码正确,也表示密码无效。 这是我的代码
session_start();
//error_reporting(0);
//@ini_set('display_errors', 0);
/*
Checking for login
*/
if (!$_POST['pw'] == "") {
$_SESSION['password'] = $_POST['pw'];
}
$pass = $_SESSION['password'];
$configpassword = "a random password";
$sessionpass = $_SESSION['password'];
if (!$pass == $configpassword) {
echo "<title>ACCESS DENIED !</title><h2>ACCESS DENIED !</h2>";
echo "<script>setTimeout(\"location.href = 'login.php';\",1500);</script>";
session_destroy();
die();
}
答案 0 :(得分:6)
您的条件有运算符优先级问题。
if (!$_POST['pw'] == "")
这将评估(!$_POST['pw'])
是否等于""
,它将首先将$_POST['pw']
转换为布尔值,然后取消它,然后将其与""
的布尔值进行比较(这是假的)。这最终会使您的条件与您想要的相反:!$_POST['pw'] == ""
只有在$_POST['pw']
等于""
时才会为真(或"0"
等任何其他假名值)。
与if (!$pass == $configpassword)
尝试将这些更改为:
if ($_POST['pw'] != "")
和
if ($pass != $configpassword)