我正在尝试将 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();
}
您的条件存在运算符优先级问题。
if (!$_POST['pw'] == "")
这将评估(!$_POST['pw'])
是否等于""
,首先将$_POST['pw']
转换为布尔值,然后否定它,然后将其与布尔值""
(为假(进行比较。 这最终会使你的条件做与你想要的相反的事情:只有当$_POST['pw']
等于""
(或任何其他假值,如"0"
(时,!$_POST['pw'] == ""
才是真的。
if (!$pass == $configpassword)
同样的问题
尝试将这些更改为:
if ($_POST['pw'] != "")
和
if ($pass != $configpassword)