【thinkphp】app接口签名+验证签名

【thinkphp】app接口签名+验证签名 app接口签名+验证签名 比较简单 求各位大牛指教 IndexController.class.php

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        //缓存token过期时间
        F(session_id().'tokenTime',time() + 1200);
        $this->display();
    }
    /*
     * 接受数据
     */
    public function getMas(){
        //接受token参数,强制转换字符串
        $token=I('post.token/s');
        //验证
        $check=checkToken($token);
        if ($check== 10001){
            $this->ajaxReturn("接口时间过期");
        }elseif ($check== 10002){
            $this->ajaxReturn("非法调用接口");
        }elseif ($check== 10003){
            $this->ajaxReturn("正常!");
        }
        
    }
}

Common\function.php

/*
 * 验证token
 * 10001 时间过期
 * 10002 签名失败
 * 10003 验证通过
 */
function checkToken($token){
    //生成当前要验证的token
    $check=md5(session_id().'str1');
    //取过期时间
    $tokenTime=S(session_id().'tokenTime');
    //截取接收到的token里面的时间
    $time=substr($token,32);
    //截取接收到的token md5
    $token=substr($token,0,32);
    //判断是否过期
    if ($tokenTime>$time){
        //没有过期   
        if ($check == $token){
            //更新token过期时间
            F(session_id().'tokenTime',time() + 1200);
            //返回正常
            return 10003;
        }else {
            //签名验证失败
            return 10002;
        }
    }else {
        //返回过期,并且清空缓存
        S(session_id().'tokenTime',NULL);
        return 10001;
    }
}

模板写法

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>测试</title>
        <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <input type="text" name="mas" id="mas" value="" />
        <input type="button" id="tijiao" value="点击发送" onclick="getMasg()" />
        <input type="hidden" name="token" id="token" value="{:md5(session_id().'str1').base64_encode(time())}" />
        
        <p>回复的消息:<span id="str"></span></p>
    </body>
    <script type="text/javascript">
        function getMasg(){
            $.ajax({
                url:'{:U('Home/Index/getMas')}',
                type:'POST', //GET
                data:{
                    token:$("#token").val(),
                },
                success:function(data){
                    $("#str").text(data)
                    console.log(data)
                },
            });            
        }
    </script>
</html>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维一切

应用更新和部署 转

先来看我蹩脚的翻译:https://mesosphere.github.io/marathon/docs/deployments.html 应用部署

712
来自专栏月牙寂

k8s源码分析-----kubelet(8)pod管理

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

4338
来自专栏FreeBuf

Cookiel劫持测试工具 – Cookie Injecting Tools

Cookie Injecting Tools 是一款简单的开源cookie利用工具,是Chrome浏览器上开发的一个扩展插件,能够灵活地进行SQL注入测试,编辑...

2727
来自专栏一个爱吃西瓜的程序员

requests库的基本用法

Requests 是使用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP库。 它比urllib库更加方便,可以节约...

1111
来自专栏逸鹏说道

CentOS安装Python3.7

先下载一下压缩包(FTP传也一样):weget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar...

1143
来自专栏kevin-blog

python版本管理工具:pyenv

这几天在学习python,因为我学的是python3的语法,但是我ubuntu默认安装的是python2,我sqlmap需要的环境也是python2的,但是我需...

1653
来自专栏技术沉淀

命令行工具:文件目录操作

1375
来自专栏用户2442861的专栏

C++11网络编程

Handy是一个简洁优雅的C++11网络库,适用于linux与Mac平台。十行代码即可完成一个完整的网络服务器。

5284
来自专栏嵌入式程序猿

带你走进飞思卡尔Flashloader(3)

学习完协议篇,今天我们来学习飞思卡尔Flashloader之命令API。 获取属性命令 获取属性命令用来查询Flashloader的各种属性和设置,每一个支...

2827
来自专栏DannyHoo的专栏

Xcode8之后使用cocoapods遇到的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

1021

扫码关注云+社区

领取腾讯云代金券