php cookie传数据库,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

标签:token,mysql,php

来源: https://codeday.me/bug/20191119/2039184.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值