检查会话以获取密码

时间:2014-10-13 04:59:07

标签: php

我试图将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();
}

1 个答案:

答案 0 :(得分:6)

您的条件有运算符优先级问题。

if (!$_POST['pw'] == "")

这将评估(!$_POST['pw'])是否等于"",它将首先将$_POST['pw']转换为布尔值,然后取消它,然后将其与""的布尔值进行比较(这是假的)。这最终会使您的条件与您想要的相反:!$_POST['pw'] == ""只有在$_POST['pw']等于""时才会为真(或"0"等任何其他假名值)。

if (!$pass == $configpassword)

相同的问题

尝试将这些更改为:

if ($_POST['pw'] != "")

if ($pass != $configpassword)