您的当前位置:首页正文

PHP中ThinkPhp框架的token使用

2024-08-01 来源:化拓教育网

在做登录信息核对时,面对源源不断的数据比对,都会给服务器造成一定的压力。对于我们常用的ThinkPhp框架也会有这样的困扰。不过有一种方法可以解决这类问题,那就是Token的作用。

一、token在ThinkPhp框架的使用

1. 首先在数据库的 users 表中添加两个字段token、time_out

token 用于存储用户的 token

time_out 用于设置用户 token 的过期时间

2.创建函数

checkToekn($token)

函数用于检验 token 是否存在, 并且更新 token

public function checkToken($token)
    {
        $user = new \app\index\model\Users();
        $res = $user->field('time_out')->where('token', $token)->select();
 
        if (!empty($res)) {
            //dump(time() - $res[0]['time_out']);
            if (time() - $res[0]['time_out'] > 0) {
     
                return 90003; //token长时间未使用而过期,需重新登陆
            }
            $new_time_out = time() + 604800; //604800是七天
            $res = $user->isUpdate(true)
                ->where('token', $token)
                ->update(['time_out' => $new_time_out]);
            if ($res) {
     
                return 90001; //token验证成功,time_out刷新成功,可以获取接口信息
            }
        }
 
        return 90002; //token错误验证失败
}

3.创建函数

douserLogin($username,$password)

用于验证用户名密码, 并登陆, 返回 token 信息

  public function douserLogin()
    {
        $user = new \app\index\model\Users();
        $userisset = $user->where('username', $username)->find();
        if ($userisset == null) {
            return json_decode('{"user":"' . $username . '","code":"400","msg":"用户不存在"}');
        } else {
            $userpsisset = $user
                ->where('username', $username)
                ->where('password', sha1(md5($password)))->find();
 
            if ($userpsisset == null) {
                return json_decode('{"user":"' . $username . '","code":"401","msg":"密码错误"}');
            } else {
                //session('user', $username);
                $token = $this->makeToken();
                $time_out = strtotime("+7 days");
                $userinfo = ['time_out' => $new_time_out,
                    'token' => $token];
                $res = $user->isUpdate(true)
                    ->where('username', $username)
                    ->update($userinfo);
                if ($res) {
                    return json_decode('{"user":"' . $username . '","toekn":'.$token.' "code":"0","msg":"登录成功"}');
                }
            }
        }
}

二、Token的概念

token是客户端频繁向服务器端请求数据,服务器频繁的去数据库查询用户名和密码判断用户名和密码正确与否,并作出相应的提示,在这样的背景下,token便应运而生了。

以上就是PHP中ThinkPhp框架的token使用,使用后会发现token面对数据登录的信息请求,有着很好地处理效果。大家赶快跟着上方的步骤,在ThinkPhp框架中展开对token使用吧。
推荐操作系统:windows7系统、PHP5.6、DELL G3电脑

化拓教育网还为您提供以下相关内容希望对您有帮助:

PHP-ThinkPHP中的表单令牌是什么原理

Token一般用在两个地方——防止表单重复提交、anti csrf攻击(跨站点请求伪造)。原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成一个随机数Token,并且将Token放置到session当中,然后将Token发给客户端(一般通过构造hidden表单)。下次客户端提交请求时,Token会随着表单一起提交到...

自己用thinkphp做微信接口类文件,遇一个问题,GET获取到的token,如何将...

true)->select(); foreach ($token as $key => $v) { if ($v['expire_time'] - 300 < time()) { $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$v['appid

Thinkphp3.2.3接入公众号响应微信发送的Token验证总是失败

不使用Thinkphp3.2.3的情况下可以验证成功,应用框架后不能通过,不知道是什么原因啊<?phpnamespaceHOME\Controller;useThink\Controller;define("TOKEN","weixin");//定义你公众号自... 不使用Thinkphp3.2.3的情况下可以验证成功,应用框架后不能通过,不知道是什么原因啊<?phpnamespace HOME\Controller;use Think\C...

详解ThinkPHP6结合GuzzleHTTP发送HTTP请求

thinkphp微信公众号程序主动调用微信的接口需要用到access_token,以及需要主动发送请求设置公众号菜单。为什么选择GuzzleHTTP Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。接口简单:构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。发送...

thinkphp3.2 为什么token表单验证的hash值不刷新

是页面引用有点小错误 导致令牌不刷新 1 $("#verify_img").click(function() {2 var verifyURL = "public/verify";3 var time = new Date().getTime();4 $("#verify_img").attr({5 "src" : verifyURL + "/" + time6 });7 });

thinkphp框架如何架设oauth2.0服务

但其实还有一种方式是在对于access_token生成的时候自动包含user_id再进行加密,在解码的时候从access_token直接取出user_id就可以了。这里关于user_id和密码验证的都没有去实现,需要后期继承ThinkOAuth2类或者修改checkUserCredentials方法才能实现的。另外这套东西用在REST模式下我认为更好!

thinkphp laravel对比的区别有哪些

1、渲染模版方式的不同:在Laravel框架里,使用return view()来渲染模版;而ThinkPHP里则使用了$this->display()的方式渲染模版;2、在Laravel框架里,由于其考虑到了跨站请求伪造, 所以如果使用form表单以post方式进行传值时,如果不再form表单中加入{{csrf_field()}}则会报出TokenMethodnotfound的语法错误...

thinkphp 防止重复提交数据。

验证码错误就不让他提交,直接转向就好了!~~验证码是防止重复提交的一个简单的方式,目前还是比较有效的!~~而且tp生成验证码很简单,验证也很方便的!~~具体可以参考文档这里:http://document.thinkphp.cn/manual_3_2.html#verify 希望对你有帮助,如果有帮助,记得采纳哟!~~...

thinkphp6解决 CORS 跨域

1,在app/middleware.php中添加 中间件,这样就改成了 是不安全的,可以在config/cookie.php配置cookie 有效域名的domain 如果接口请求发送了token,会提示Access-Control-Allow-Headers这个问题,tp6默认是这样 可以在'Access-Control-Allow-Headers' 这一样加上XXX-token,我在搞这个时还遇见post请求...

php开发微商城要注意什么

同时Thinkphp框架可直接升级。一般情况下我们在自己开发的过程中,需要注意PHP安全方面的知识,以下就说一下常见安全问题。1.SQL 注入SQL 注入是常见网站最大的威胁之一,如果数据库受到SQL 注入的攻击,那么可以获取你全部的数据库。当前主流的解决方法有两种。转义用户输入的数据或者使用封装好的语句。一般...