首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从cookie读取值错误

从cookie读取值错误
EN

Stack Overflow用户
提问于 2017-10-14 09:30:06
回答 1查看 119关注 0票数 0

我使用一个带有令牌的cookie编写了一个脚本。它的工作是让我知道用户是否登录,但我不知道为什么总是返回false。我检查了我的数据库,每次我登录新记录时都会创建一个新记录,但是我的PHP文件总是返回false。我正在使用本地服务器easy。第一笔钱7天内就死了。第二例在3天内死亡。

代码语言:javascript
运行
复制
<?php
include('./classes/DB.php');

function isloggedIn(){

    if(isset($_cookie['SNID'])){
        if(DB::query('SELECT user_id FROM login_tokens WHERE token:=token', array(':token'=>sha1($_cookie['SNID'])))){
            $userid = DB::query('SELECT user_id FROM login_tokens WHERE token:=token', array(':token'=>sha1($_cookie['SNID'])))[0]['user_id'];

            if(isset($_cookie['SNID_2'])){

            return $userid;
            }else{
                $cstrong = True;
                $token = bin2hex(openssl_random_pseudo_bytes(64, $cstrong));
                DB::query('INSERT INTO login_tokens VALUES(null, :token, :user_id)', array(':token'=>sha1($token), ':user_id'=>$userid));
                DB:query('DELETE FROM login_tokens WHERE token:=token', array(':token'=>sha1($_cookie['SNID'])));

                setcookie("SNID", $token, time()+60*60*24*7, '/', NULL, NULL, TRUE);
                setcookie("SNID_2", $token, time()+60*60*24*3, '/', NULL, NULL, TRUE);

                return $userid;
            }
        }
    }
    return false;
}

if (isloggedIn()){
    echo 'logged in ';
    echo isloggedIn();

    }else{
        echo 'not logged in ';
    }
?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-14 09:39:35

您必须使用超全局变量$_COOKIE。您的示例使用$_cookie。变量名区分大小写,因此它们是不同的变量。

$_COOKIE是PHP中的预定义变量之一。

其次,您可以在浏览器选项卡Applications Cookie中检查cookie。在该选项卡中,查找与键SNID对应的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46742987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档