好的,我很困惑。
我从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。当我检查它时,它在整个过程中看起来都很好,但是当查询数据库时,它什么都不返回。如果我用"字符串替换变量"它工作正常。要清楚的是,变量的数据类型也是一个字符串。有什么想法吗?
答案 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();
这应该会有效!