php token使用与验证示例【测试可用】 原创

本文实例讲述了php token使用与验证。分享给大家供大家参考,具体如下:

一、token功能简述

PHP 使用token验证可有效的防止非法来源数据提交访问,增加数据操作的安全性

二、实现方法:

前台form表单:

<form action="do.php" method="POST">
<?php $module=mt_rand(100000,999999);?>
 <input type="text" name="sec_name" value=""/>
 <input type="hidden" name="module" value="<?php echo $module;?>"/>
 <input type="hidden" name="timestamp" value="<?php echo time();?>"/>
 <input type="hidden" name="token" value="<?php echo md5($module.'#$@%!^*'.time());?>"/>
</form>

后台do.php的token验证部分:

<?php
$module = $_POST['module'];
$timestamp = $_POST['timestamp'];
$token = md5($module.'#$@%!^*'.$timestamp);
if($token != $_POST['token']){
 echo('非法数据来源');
 exit();
}
$sec_name=$_POST['sec_name'];
//PHP数据处理.....
?>

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php程序设计安全教程》、《php安全过滤技巧总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

时间: 2017-08-27

php版微信开发Token验证失败或请求URL超时问题的解决方法

本文实例分析了php版微信开发Token验证失败或请求URL超时问题的解决方法.分享给大家供大家参考,具体如下: 微信开发最近要用到的一个功能,其实就是一个非常的简单的用户输入然后自动搜索数据库并进行一个数据回复了,这个与官方没多大的问题,但小编就微信Token验证失败折腾了许多,下面解决了给各位分析一下. 1.Token验证失败 这个就是要检查配置文件了,最基本的就是 define("TOKEN", "weixin");  weixin 是你的微信开发后台的ID

php表单加入Token防止重复提交的方法分析

本文实例讲述了php表单加入Token防止重复提交的方法.分享给大家供大家参考,具体如下: Token浅谈 Token,就是令牌,最大的特点就是随机性,不可预测.一般黑客或软件无法猜测出来. 那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方--防止表单重复提交.anti csrf攻击(跨站点请求伪造). 两者在原理上都是通过session token来实现的.当客户端请求页面时,服务器会生成一个随机数Token,并且将Token放置到session当中,然后将Token发

PHP使用token防止表单重复提交的方法

本文实例讲述了PHP使用token防止表单重复提交的方法.分享给大家供大家参考,具体如下: <?php /* * PHP使用token防止表单重复提交 * 此处理方法纯粹是为了给初学者参考 */ session_start(); function set_token() { $_SESSION['token'] = md5(microtime(true)); } function valid_token() { $return = $_REQUEST['token'] === $_SESSION

利用php-cli和任务计划实现刷新token功能的方法

1.业务需求 需要实现这样一个功能:在第三方授权的认证当中,在用户首次登录授权我们会得到一个access_token,有效期为25小时,还会得到一个refresh_token,有效期为30天. 我们只要保存好这个refresh_token,在30天内我们都可以用这个refresh_token去请求一个api,他会返回一个新的access_token.这样我们只需要让用户授权一次,我们就可以获得长达30天的一个授权期限. 这里可以分为几个点: <1>这个应该是要定期执行的一个任务. 25小时才会

PHP令牌 Token改进版

正是由于使用了 base64 ,所以在把这个令牌通过 GET方法发送的时候,出现了问题. 比如:http://test/test.php?a=1+2 你用 $_GET["a"] 取得是:1 2 ,即那个加号没有了.一开始我用 urlencode 对其进行转换,但是总有那么一两的结果是意料外的. 后来想想 base64 的字符就限定于: [A-Za-z0-9\+\/=] 这么多,加号出问题,我就把加号换成不出问题的符号,下划线是最好的选择.下面是修改后的代码: GEncrypt.inc.

PHP Token(令牌)设计

如何达到目的: 怎样避免重复提交? 在SESSION里要存一个数组,这个数组存放以经成功提交的token.在后台处理时,先判断这个token是否在这个数组里,如果存在,说明是重复提交.  如何检查来路? 可选项,这个token在生成的时候,加入了当前的session_id.如果别人copy你的html(token一迸copy),在提交时,理论上token里包含的session_id不等于当前session_id,就可以判断这次提交是外部提交.  如何匹配要执行的动作? 在token的时候,要把这

基于thinkPHP3.2实现微信接入及查询token值的方法

本文实例讲述了基于thinkPHP3.2实现微信接入及查询token值的方法.分享给大家供大家参考,具体如下: 1.在con.fig文件里面配置TOKEN,APPID,APPSECRET值 2.控制器WeixinController代码: <?php /** * 微信父类控制器 * @author Songle * */ namespace Weixin\Controller; use Think\Controller; class WeixinController extends Contro

关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题

相信很多人会跟我一样,token验证之后,发送消息给订阅号,没有消息返回. 以下,说一下我辛苦调试得到的解决办法: 首先,token验证: 自己写的token一直验证失败,找了好久,没有发现bug.实在没办法,就用了官方的示例代码.并且通过示例代码调试,发现了一个让我吐血的bug(也不算bug): token验证貌似要求字符编码格式!!!! 官方的示例代码,直接上传到服务器,token直接过! 把官方示例代码改为UTF-8格式,再上传覆盖,token失败!失败!失败! 后来,把自己写的修改为AN

验证token、回复图文\文本、推送消息的实用微信类php代码

本文实例为大家分享了用于验证token,回复图文.文本,向用户推送消息等功能的微信类,具体代码如下 <?php class Wechat{ private $data = array(); public function __construct($token){ $this -> auth($token, $wxuser) || exit; if(IS_GET){ echo($_GET['echostr']); exit; }else{ $xml = file_get_contents(&qu

PHP定时任务获取微信access_token的方法

本文实例讲述了PHP定时任务获取微信access_token的方法.分享给大家供大家参考,具体如下: 微信access_token在开发时会变的好像是几分种不一样了,这里我们来介绍关于PHP定时任务获取微信access_token的方法. 最近开发微信公众平台,公众号调用各接口时都需使用access_token,access_token是公众号的全局唯一接口调用凭据,开发时需要进行妥善保存. access_token有效期为7200秒 ,重复获取将导致上次获取的access_token失效. 由

Golang通过小程序获取微信openid的方法示例

为什么要获取小程序的 openid 在开发微信小程序的过程中,小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系.那么这个用户身份标识就是 openid. 小程序获取 openid 的流程 那么小程序获取 openid 的流程具体如下,这里我简化了一下,因为我们只需要获取到 openid 即可,具体可以参考 这里 我们需要在小程序中调用 wx.login() 获取 code 码,然后将这个 code 码发送给后端,后端带着这个 code 码和 app

java获取微信accessToken的方法

本文实例为大家分享了java如何获取微信accessToken,供大家参考,具体内容如下 package com.fengdi.lianmeng.task; import com.fengdi.lianmeng.common.CacheHelper; import com.fengdi.lianmeng.util.http.HttpRequest; import com.fengdi.lianmeng.util.tencent.CloudSignHelper; import com.fengdi

js获取微信版本号的方法

微信现在几乎已经普遍在使用,但是微信版本一直在更新,不同的版本有不同的功能,于是了解微信的版本号很重要,以便自己及时更新体验新的功能.那么如何用js获取微信版本号呢? 一.判断微信版本号 var wechatInfo = navigator.userAgent.match(/MicroMessenger\\/([\\d\\.]+)/i) ; if( !wechatInfo ) { alert("本活动仅支持微信") ; } else if ( wechatInfo[1] < &q

详细Java批量获取微信公众号方法

最近需要爬取微信公众号的文章信息.在网上找了找发现微信公众号爬取的难点在于公众号文章链接在pc端是打不开的,要用微信的自带浏览器(拿到微信客户端补充的参数,才可以在其它平台打开),这就给爬虫程序造成很大困扰.后来在知乎上看到了一位大牛用php写的微信公众号爬取程序,就直接按大佬的思路整了整搞成java的了.改造途中遇到蛮多细节问题,拿出来分享一下. 系统的基本思路是在安卓模拟器上运行微信,模拟器设置代理,通过代理服务器拦截微信数据,将得到的数据发送给自己的程序进行处理. 需要准备的环境:node

获取微信uin的方法

首先解释什么是微信的"uin":uin就是user information,也就是特定微信用户的ID. 为什么要取得uin呢?:因为有读取微信聊天记录的需求,微信android版的数据库文件是可以取到的,但是微信对数据库进行了加密,而在破解的过程中要用到uin,至于如何破解,因为会在近期为大家介绍. 言归正传,下面开始介绍uin的获取方法: 1.登录微信网页版(推荐使用chrome浏览器,因为下一步是针对chrome浏览器的) 2.开始chrome浏览器内置的抓包模式,即在新建的标签页

微信公众平台获取access_token的方法步骤

前言:access_token是微信公众平台接口的重要参数,很多接口都需要这个参数. 微信公众平台文档地址:微信公众平台技术文档 一.access_token说明 access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留512个字符空间.access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效. 1:公众平台的API调用所需的

微信公众号获取access_token的方法实例分析

本文实例讲述了微信公众号获取access_token的方法.分享给大家供大家参考,具体如下: 上一版需求做了微信公众号开发,秀了一波操作,也遇到了很多坑.现在把微信公众号一些基本的操作记录一下. 微信公众号获取access_token  官方文档地址 access_token是公众号的全局唯一接口调用凭据,我们和微信服务器进行交互,服务器通过access_token判断我们是谁(哪个公众号服务的请求).所以 我们在开发过程中服务端拿到的access_token是一定不能显式暴露给外部,否则将导致

微信公众平台实现获取用户OpenID的方法

本文实例讲述了微信公众平台实现获取用户OpenID的方法.分享给大家供大家参考.具体分析如下: 用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接),达到打开网页的目的,但是view不能获取用户的openid,需要使用微信"网页授权获取用户基本信息"高级接口结合使用,获得用户的登入个人信息. 具体方法: 1.配置网页授权回调域名,如 www.jb51.net 2.模拟公众号的第三方网页,http://www.jb51.net/getc

PHP版微信第三方实现一键登录及获取用户信息的方法

本文实例讲述了PHP版微信第三方实现一键登录及获取用户信息的方法.分享给大家供大家参考,具体如下: 注意,要使用微信在第三方网页登录是需要"服务号"才可以哦,所以必须到官方申请. 一开始你需要进入微信公众平台开启开发模式,并且填写oauth2的回调地址,地址填写你项目的域名就可以了.比如:www.baidu.com或zhidao.baidu.com.如果你的项目在二级域名就写二级域名 前端url授权地址,在url中填写appid与你项目中方法中的oauth的地址,具体在下面的代码中可以