php-如何将cookie与数据库中的令牌匹配?

我已经写了以下脚本.一切都在我的应用程序中正常工作,但验证仍会继续返回登录状态.但是我已经阅读了很多有关我的问题的文章,并且一切似乎都正确,但是当然应该有一些错误,否则它将正常工作.

在我的情况下,用户登录时,令牌存储在数据库和cookie中.
为了创建令牌,我使用:

bin2hex(openssl_random_pseudo_bytes(16));

接下来,我要做的是设置一个页面,该页面首先检查cookie令牌和数据库中的令牌是否匹配.可以肯定的是,我首先将它们都回显,并且都给出相同的标记.我这样做是这样的:

include 'mydatabase.PHP'; 
$cookie_name = "My_cookiename";
$result = MysqL_query("SELECT * FROM users WHERE token='{$_COOKIE[$cookie_name]}'");
while($row = MysqL_fetch_array($result)) {

echo $row['token'];
echo $_COOKIE[$cookie_name];

}

好的,所以我确定此时Cookie令牌和数据库令牌匹配.
现在,我想将它们与if / else进行比较.在这里,我错了,因为我无法正常工作.我现在所拥有的是:

$result = MysqL_query("SELECT * FROM users WHERE token='{$_COOKIE[$cookie_name]}'");
while($row = MysqL_fetch_array($result)) {
if ($row['token'] != $_COOKIE[$cookie_name]) { 
header('Location:myloginpage.PHP'); exit(); } else { // MY PAGE CONTENT IF MATCH }

我认为这行有问题:

if ($row['token'] != $_COOKIE[$cookie_name])

任何帮助都将非常有用,因为此时我真的很困.

解决方法:

正如您对问题的评论所言,您正在不必要地检查事物. mySQL查询本身会为您执行令牌检查

include 'mydatabase.PHP'; 
$cookie_name = "My_cookiename";
$result = MysqL_query("SELECT * FROM users WHERE token='{$_COOKIE[$cookie_name]}'");
if (MysqL_num_rows($results) != 1) {
    header('Location:myloginpage.PHP');
    exit();
}
// Content for your page goes here, no need for an else because of exit

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...