变量不能正常工作

时间:2016-01-11 17:14:39

标签: php sql variables cookies

好的,我很困惑。

我从cookie中传递了一些登录信息,并且sql查询拒绝它,因为没有找到它。我完成了我能想到的每一项测试。 var_dumps,数据类型等等,一切看起来都合适。任何帮助都是极好的。谢谢!

我试图在这里调用登录函数并传入cookie:

    if ((isset($_COOKIE["u"]) && empty($_SESSION["user_id"])) || (isset($_COOKIE["u"]) && !isset($_SESSION["user_id"])))
{

    $username = decrypt($_COOKIE["u"], SALT);
    $password = decrypt($_COOKIE["p"], SALT);

    login($username, $password, "1");   

}

功能是:

//Log in
function login($username, $password, $remember) {

$userx = query("SELECT * FROM user WHERE username = ?", $username);

if (!empty($userx))
{
    $user = $userx["0"];

    if (validate_password($password, $user["hash"]) === true)
    {
    popsession($user, $password, $remember);
    }
    else
    {
    apologize("Invalid Username or Password");
    }
}
else
{
    apologize("Invalid Username or Password");
}

}

我的问题发生在$ username。当我检查它时,它在整个过程中看起来都很好,但是当查询数据库时,它什么都不返回。如果我用"字符串替换变量"它工作正常。要清楚的是,变量的数据类型也是一个字符串。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您正在使用PDO,请更改此信息:

$userx = query("SELECT * FROM user WHERE username = ?", $username);

对此:

$userx = $conn->prepare("SELECT * FROM user WHERE username = :username");
$userx->bindParam(':username', $username, PDO::PARAM_STR);
$userx->execute();

这应该会有效!