精华内容
下载资源
问答
  • php 如何验证token

    2020-01-08 17:58:47
    //秘钥 ,非常重要,不参与url传输、秘钥泄露将导致token验证失效 $data['time'] = time(); $data['data'] = 'data'; $data['token']= md5( md5($key) . md5($data['time']) ); // 拼接url $url = 'doma...

    生成一个请求url

    <?php
    
    $key = 'key'; //秘钥 ,非常重要,不参与url传输、秘钥泄露将导致token验证失效
    
    $data['time'] = time();
    
    $data['data'] = 'data';
    
    $data['token']= md5( md5($key) . md5($data['time']) );
    
    // 拼接url
    
    $url = 'domain.com/api.php?' . http_build_query($data);
    

    服务器端验证token

    <?php
    
    $param = $_GET;
    
    // 验证时间戳
    
    if (!isset($param['time']) || intval($param['time']) <= 1) {
    
        exit('时间戳不正确');
    
    }
    
    // 设置每个token的过期时间为60秒
    
    if (time() - intval($param['time']) > 60) {
    
        exit('请求超时');
    
    }
    
    // 验证token
    
     
    
    // 服務器端生成token
    
    $key = 'key'; //秘钥
    
    $time = time();
    
    $server_token= md5( md5($key) . md5($param['time']) );;
    
    if ($server_token !== $param['token']) {
    
        exit('token错误');
    
    }
    
     
    echo '验证通过';
    
    // 其他业务逻辑
    
    // ...
    
    展开全文
  • 验证token(weixin/wx.php) <?php function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $echostr=$_GET["echostr"]; ...
    验证token(weixin/wx.php)
    <?php
    	 function checkSignature()
    	{
    	    $signature = $_GET["signature"];
    	    $timestamp = $_GET["timestamp"];
    	    $nonce = $_GET["nonce"];
    		$echostr=$_GET["echostr"];
    	    $token = "xxx";(填自己的)
    	    $tmpArr = array($token, $timestamp, $nonce);
    	    sort($tmpArr, SORT_STRING);
    	    $tmpStr = implode( $tmpArr );
    	    $tmpStr = sha1( $tmpStr );
    	    
    	    if( $tmpStr == $signature ){
    			echo $echostr;
    	        return true;
    	    }else{
    	        return false;
    	    }
    	}
    	checkSignature();
    ?>
    

    在这里插入图片描述
    发送请求,获取access_token

    <?php
    //主动像微信服务器发送请求
    	session_start();
       	class WeiXin{
         //属性
            private $appid="wxd1cf86532ebf744d";
            private $secret="668bac5f2211050f0aaaeb8add28c1b9";
         //方法
    		//请求access_token
    		function getAccessToken(){
    				if($_SESSION['access_token']&&$_SESSION['expire_time']>time()){
    			    //如果access_token在session并未过期
    			    return $_SESSION['access_token'];
    			}else{
    				$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->secret}"; 
    				//return $this->httpGet($url);
    				$json=$this->httpGet($url);
    				//将json转化为对象  //加,ture为数组
    				$obj=json_decode($json);
    				$access_token= $obj->access_token;
    				$_SESSION['access_token'] = $access_token;
    				$_SESSION['expire_time'] = time()+7000;
    				return $access_token;
    			}
    			
    		}
    		function httpGet($url){
    		$curl=curl_init();
    		curl_setopt($curl, CURLOPT_URL,$url);
    		curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    		$output = curl_exec($curl);
    		curl_close($curl);
    		return $output;
    	 }
    		function httpPost($url,$data){
    	 		 $curl=curl_init();
    	          curl_setopt($curl, CURLOPT_POST,true);
    	 		 curl_setopt($curl ,CURLOPT_URL,$url);
    	 		 curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    	        	 curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    	 		 $output = curl_exec($curl);
    	 		 curl_close($curl);
    	 		 return $output;
    	 	 }
        }
    	$weixin=new WeiXin();
    	echo $access_token= $weixin-> getAccessToken();
    ?>
    

    在这里插入图片描述

    展开全文
  • 主要介绍了PHP实现微信公众号验证Token的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • token验证php

    2015-03-25 22:41:07
    token验证php
  • 添加自己的url需要验证token,80或者443的都可以,本来打算用443的但测试半天没通过,查了查好像说是啥请求方式不一样(有懂的可以留言),我用php写的用的80端口; 下面上token验证代码: public function ...

    今天先说下token验证和接收消息:
    就是先搞一个备案的域名做基本配置,在这里

    然后这里是配置信息:在这里插入图片描述
    在这里插入图片描述
    添加自己的url需要验证token,80或者443的都可以,本来打算用443的但测试半天没通过,查了查好像说是啥请求方式不一样(有懂的可以留言),我用php写的用的80端口;
    下面上token验证代码:

        public function indexAction(){
            $echoStr = $this->_request->getQuery("echostr");
            $signature = $this->_request->getQuery("signature");
            $timestamp = $this->_request->getQuery("timestamp");
            $nonce = $this->_request->getQuery("nonce");
            $token = TOKEN;
             //将token、timestamp、nonce按字典序排序
             $tmpArr = array($token, $timestamp, $nonce);
             sort($tmpArr);      
             $tmpStr = implode($tmpArr);
             //对tmpStr进行sha1加密
             $tmpStr = sha1($tmpStr);
    
    
              if($tmpStr == $signature){
                 return $this->_response->setBody($echoStr);
              }else{
              }
        }
    

    测试没有问题:
    在这里插入图片描述

    这个有一个坑:就是验证完以后很多人都认为是在上面代码块里面的else里面接收消息,其实是错误的,很多时候是接不到的所以我改成这样:

        public function indexAction(){
            $echoStr = $this->_request->getQuery("echostr");
            $signature = $this->_request->getQuery("signature");
            $timestamp = $this->_request->getQuery("timestamp");
            $nonce = $this->_request->getQuery("nonce");
            $token = TOKEN;
             //将token、timestamp、nonce按字典序排序
             $tmpArr = array($token, $timestamp, $nonce);
             sort($tmpArr);      
             $tmpStr = implode($tmpArr);
             //对tmpStr进行sha1加密
             $tmpStr = sha1($tmpStr);
    
    
            //  if($tmpStr == $signature){
            //     return $this->_response->setBody($echoStr);
            //  }else{
            //  }
            $postStr = $this->getRequest()->getRaw();
            if($postStr){
                $this->responseMsg($postStr);
            }
        }
    

    把验证的直接注释掉就好了,直接用下面的接收消息,亲测没有问题;然后就解析消息做对应的策略就好了;
    大家是这样的吗?可以交流交流;
    大家可以找下面的看看效果:

    在这里插入图片描述

    展开全文
  • PHPtoken验证

    千次阅读 2018-02-09 09:21:43
    PHP在控制器中怎么添加token验证//获得token private function getToken(){ $tokenName = C('TOKEN_NAME',null,'__hash__'); $tokenType = C('TOKEN_TYPE',null,'md5'); if(!isset($_SESSION[$tokenNam...

    PHP在控制器中怎么添加token验证

    //获得token
        private function getToken(){
            $tokenName  = C('TOKEN_NAME',null,'__hash__');
            $tokenType  = C('TOKEN_TYPE',null,'md5');
            if(!isset($_SESSION[$tokenName])) {
                $_SESSION[$tokenName]  = array();
            }
            // 标识当前页面唯一性
            $tokenKey   =  md5($_SERVER['REQUEST_URI']);
            if(isset($_SESSION[$tokenName][$tokenKey])) {// 相同页面不重复生成session
                $tokenValue $_SESSION[$tokenName][$tokenKey];
            }else{
                $tokenValue is_callable($tokenType) ? $tokenType(microtime(true)) : md5(microtime(true));            
                $_SESSION[$tokenName][$tokenKey]   =  $tokenValue;
                if(IS_AJAX && C('TOKEN_RESET',null,true))
                    header($tokenName.': '.$tokenKey.'_'.$tokenValue); //ajax需要获得这个header并替换页面中meta中的token值
            }
            return array($tokenName,$tokenKey,$tokenValue); 
        }
     

    PHP表单增加token验证,防止站外提交/重复提交/双击提交


    <?php
    @session_start();
    if($_POST) {
        if ($_POST['privatetoken'] == $_SESSION['token']) {
            unset($_SESSION['token']);
            echo '合法提交';
        } else {
            echo 'novalite';
        }
    }
    $token=md5(getrandcode());
    $_SESSION['token'] = $token;
    function  getrandcode(){
        $str =array(1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f','g','h');
        $res='';
        for($i=0;$i<4;$i++){
            $rand=mt_rand(1,16);
            $res .=$str[$rand];
        }
        return  $res;
    }
    ?>
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>form</title>
    </head>
    <body>
    <form action="form.php" method="post">
        url:<input type="text"   name="urlist" />
        <input type="hidden" name="privatetoken" value="<?php echo $token;?>" />
        <br />
        <input type="submit" value="tijiao" />
    </form>
    </body>
    </html>
    
    
    -------------------------------------------
    表单被模拟的话 session是不会重新生成的-
    session
    Token,就是令牌,最大的特点就是随机性,不可预测。一般黑客或软件无法猜测出来。

    那么,Token有什么作用?又是什么原理呢?

    Token一般用在两个地方——防止表单重复提交、anti csrf攻击(跨站点请求伪造)。

    两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成一个随机数Token,并且将Token放置到session当中,然后将Token发给客户端(一般通过构造hidden表单)。下次客户端提交请求时,Token会随着表单一起提交到服务器端。

    然后,如果应用于“anti csrf攻击”,则服务器端会对Token值进行验证,判断是否和session中的Token值相等,若相等,则可以证明请求有效,不是伪造的。

    不过,如果应用于“防止表单重复提交”,服务器端第一次验证相同过后,会将涩session中的Token值更新下,若用户重复提交,第二次的验证判断将失败,因为用户提交的表单中的Token没变,但服务器端session中Token已经改变了。

    上面的session应用相对安全,但也叫繁琐,同时当多页面多请求时,必须采用多Token同时生成的方法,这样占用更多资源,执行效率会降低。因此,也可用cookie存储验证信息的方法来代替session Token。比如,应对“重复提交”时,当第一次提交后便把已经提交的信息写到cookie中,当第二次提交时,由于cookie已经有提交记录,因此第二次提交会失败。

    不过,cookie存储有个致命弱点,如果cookie被劫持(xss攻击很容易得到用户cookie),那么又一次gameover。黑客将直接实现csrf攻击。
    1. <?php  
    2. /* 
    3. * PHP简单利用token防止表单重复提交 
    4. * 此处理方法纯粹是为了给初学者参考 
    5. */  
    6. session_start();  
    7. function set_token() {  
    8.     $_SESSION['token'] = md5(microtime(true));  
    9. }  
    10. function valid_token() {  
    11.     $return = $_REQUEST['token'] === $_SESSION['token'] ? true : false;  
    12.     set_token();  
    13.     return $return;  
    14. }  
    15. //如果token为空则生成一个token  
    16. if(!isset($_SESSION['token']) || $_SESSION['token']=='') {  
    17.     set_token();  
    18. }  
    19. if(isset($_POST['test'])){  
    20.     if(!valid_token()){  
    21.         echo "token error";  
    22.     }else{  
    23.         echo '成功提交,Value:'.$_POST['test'];  
    24.     }  
    25. }  
    26. ?>  
    27. <form method="post" action="">  
    28.     <input type="hidden" name="token" value="<?php echo $_SESSION['token']?>">  
    29.     <input type="text" name="test" value="Default">  
    30.     <input type="submit" value="提交" />  
    31. </form> 
    展开全文
  • PHP token验证规则

    2017-07-13 11:20:00
    PHP在控制器中怎么添加token验证 //获得token privatefunctiongetToken(){ $tokenName=C('TOKEN_NAME',null,'__hash__'); $tokenType=C('TOKEN_TYPE',null,'md5'); if(!isset($_SESS...
  • 主要为大家详细介绍了php代码实现验证token、回复图文文本、推送消息的实用微信类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了PHP token验证生成原理,结合实例形式分析了phptoken验证原理与使用技巧,需要的朋友可以参考下
  • 开始百度了好几个验证tokenphp源码,怎么测试都不对,调试也能通过就是提示"token验证失败"。 本来对2012年微信官方的验证代码没报希望,死马当成活马医,一试就中了。好气噢,宝宝不开心了!! 官方代码贴...
  • 本文实例讲述了PHP token验证生成原理。分享给大家供大家参考,具体如下:/*** @Author: Ding Jianlong* @Date: 2019-03-20 00:38:01* @Last Modified by: Ding Jianlong* @Last Modified time: 2019-03-22 17:50:59...
  • 2--验证token

    2020-06-07 14:48:16
    在登录时要携带 token并进行验证,在写其他控制器时,就是基于Base来写的 ,所以该文件夹下其他控制器要 extends Base。 <?php //命名空间 namespace app\api\controller\student; use think\Cache; use think\...
  • weixin_45175247
  • 配置及验证token

    2014-09-27 22:39:06
    <?php /** * wechat php test ...//define your token define("TOKEN", "xingguang"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); class wechatCallbackapiTest { public function val
  • php token验证范例

    2017-03-07 15:30:00
    <?php $module=$_GET['module']; $action=$_GET['action']; $token=md5sum($module.date('Y-m-d',time()).'#$@%!*'.$action); if($token!=$_GET['token']){ alarm('...
  • Token验证

    2019-04-10 10:38:51
    <?php /* CopyRight 2019 All Rights Reserved */ header('Content-type:text');...define("TOKEN", "myssfwh1234"); class WeChat { //验证签名 public function valid() { $echoS...
  • 微信公众号服务器配置--验证token

    万次阅读 2017-08-12 16:46:37
    3 填写相关服务器配置信息: 这里的token要跟服务器的验证文件里的token...4 写一个验证文件放进服务器,验证token,看是否连接成功。附上验证代码:<?php/** * wechat php test */ //define your tokendefine("T
  • 项目用户量逐渐增大,接口调用次数越来越多,所以决定使用Redis存token,缓解数据库压力 调研 在config/auth.php文件中发现用户的驱动使用的是EloquentUserProvider服务提供器,然后查找EloquentUserProvider.php...
  • php 简单token签权验证

    千次阅读 2017-11-30 00:54:21
    php 简单token验证在API开发过程会经常使用token来完成请求签权,以防止api接口被恶意调用。 这里演示简单的token签权,可利用时间戳来控制token过期时间。参数说明 请求地址:domain.com/api.php?...
  • PHP 写 APP 登录验证token接口 及 注册

    千次阅读 2018-07-10 10:27:52
    //注册用户 public function register(){ // $userID = 'admin3'; // $userPwd = '123456'; // $userTel = '111'; $userID = isset($_POST['name']) ? $_POST['name'] : ''; ...
  • 项目用户量逐渐增大,接口调用次数越来越多,所以决定使用Redis存token,缓解数据库压力 调研 我用的的laravel是5.2版本。在config/auth.php文件中发现用户的驱动使用的是eloquent,然后查找...
  • PHP 在做APP后台时用到的TOKEN验证功能,现已封装成类,使用很方便,有完整的生成与验证机制,可控制TOKEN过期时间,生成端经过加密处理生成的TOKEN字符,验证端解密后再验证TOKEN真正的TOKEN也是经过加密验证的,二...
  • php自定义token验证

    千次阅读 2019-04-14 15:52:51
    生成token //用户名、此时的时间戳,并将过期时间拼接在一起 $admin = $data['username']; //获取前台传来的用户账号 $time = time(); $end_time = time()+86400; $info = $admin. '.' .$time.'.'.$end_time;//设置...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,021
精华内容 408
关键字:

php验证token