检查会话以获取密码


Check Session for a password

我正在尝试将 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)