当前位置: 首页 > news >正文

帝国网站管理系统教程东营网站推广

帝国网站管理系统教程,东营网站推广,33vu页面访问升级版本,抖音小程序开发教程转载链接#xff1a;http://www.jb51.net/article/13756.htm PHP Token(令牌)设计 设计目标: 避免重复提交数据. 检查来路,是否是外部提交 匹配要执行的动作(如果有多个逻辑在同一个页面实现,比如新增,删除,修改放到一个PHP文件里操作) 这里所说的token是在页面显示的时候,写到…转载链接http://www.jb51.net/article/13756.htm PHP Token(令牌)设计 设计目标: 避免重复提交数据. 检查来路,是否是外部提交 匹配要执行的动作(如果有多个逻辑在同一个页面实现,比如新增,删除,修改放到一个PHP文件里操作) 这里所说的token是在页面显示的时候,写到FORM的一个隐藏表单项(typehidden). token不可明文,如果是明文,那就太危险了,所以要采用一定的加密方式.密文要可逆.俺算法很白痴,所以采用了网上一个现成的方法. 怎样避免重复提交? 在SESSION里要存一个数组,这个数组存放以经成功提交的token.在后台处理时,先判断这个token是否在这个数组里,如果存在,说明是重复提交.  如何检查来路? 可选项,这个token在生成的时候,加入了当前的session_id.如果别人copy你的html(token一迸copy),在提交时,理论上token里包含的session_id不等于当前session_id,就可以判断这次提交是外部提交.  如何匹配要执行的动作? 在token的时候,要把这个token的动作名称写进这个token里,这样,在处理的时候,把这个动作解出来进行比较就行了. GEncrypt.inc.php: ?php class GEncrypt extends GSuperclass { protected static function keyED($txt,$encrypt_key){ $encrypt_key md5($encrypt_key); $ctr0; $tmp ; for ($i0;$istrlen($txt);$i){ if ($ctrstrlen($encrypt_key)) $ctr0; $tmp. substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1); $ctr; } return $tmp; } public static function encrypt($txt,$key){ //$encrypt_key md5(rand(0,32000)); $encrypt_key md5(((float) date(YmdHis) rand(10000000000000000,99999999999999999)).rand(100000,999999)); $ctr0; $tmp ; for ($i0;$istrlen($txt);$i){ if ($ctrstrlen($encrypt_key)) $ctr0; $tmp. substr($encrypt_key,$ctr,1) . (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1)); $ctr; } return base64_encode(self::keyED($tmp,$key)); } public static function decrypt($txt,$key){ $txt self::keyED( base64_decode($txt),$key); $tmp ; for ($i0;$istrlen($txt);$i){ $md5 substr($txt,$i,1); $i; $tmp. (substr($txt,$i,1) ^ $md5); } return $tmp; } } ? 方法: 1granteToken 参数:formName,即动作名称,key是加密/解密 密钥. 返回一个字符串,形式是: 加密(formName:session_id) 2isToken 参数:token 即granteToken产生的结果,formName,动作名称,fromCheck是否检查来路,如果为真,还要判断token里的session_id是否和当前的session_id一至. 3dropToken,当成功执行一个动作后,调用这个函数,把这个token记入session里,GToken.inc.php ?php /** * 原理请求分配token的时候想办法分配一个唯一的token, base64( time rand action) * 如果提交将这个token记录说明这个token以经使用可以跟据它来避免重复提交。 * */ class GToken { /** * 得到当前所有的token * * return array */ public static function getTokens(){ $tokens $_SESSION[GConfig::SESSION_KEY_TOKEN ]; if (empty($tokens) !is_array($tokens)) { $tokens array(); } return $tokens; } /** * 产生一个新的Token * * param string $formName * param 加密密钥 $key * return string */ public static function granteToken($formName,$key GConfig::ENCRYPT_KEY ){ $token GEncrypt::encrypt($formName.:.session_id(),$key); return $token; } /** * 删除token,实际是向session 的一个数组里加入一个元素说明这个token以经使用过以避免数据重复提交。 * * param string $token */ public static function dropToken($token){ $tokens self::getTokens(); $tokens[] $token; GSession::set(GConfig::SESSION_KEY_TOKEN ,$tokens); } /** * 检查是否为指定的Token * * param string $token 要检查的token值 * param string $formName * param boolean $fromCheck 是否检查来路,如果为true,会判断token中附加的session_id是否和当前session_id一至. * param string $key 加密密钥 * return boolean */ public static function isToken($token,$formName,$fromCheck false,$key GConfig::ENCRYPT_KEY){ $tokens self::getTokens(); if (in_array($token,$tokens)) //如果存在说明是以使用过的token return false; $source split(:, GEncrypt::decrypt($token,$key)); if($fromCheck) return $source[1] session_id() $source[0] $formName; else return $source[0] $formName; } } ? 从$_POST里取出token,用isToken判断.如果想判断是否是执行的匹配动作,可以把isToken里的formName改一下,运行,很好,没有匹配上.证明这个成功.
http://www.zqtcl.cn/news/628905/

相关文章:

  • 免费网站商城模板宁波企业网站搭建图片
  • 上海网站备案查询建站图标素材
  • 贵州省住房和建设厅网网站网站页面设计报告
  • 做网站友汇网快速建设网站视频教程
  • 物流公司做网站注重什么官网的网站设计公司
  • 网站备案 2016电子商务平台起名
  • 济南建站详情房地产市场分析
  • 南宁品牌网站建设公司中国商业企业网
  • 建设招标网官方网站电脑版做系统简单还是网站简单
  • 网站平台建设总结品牌网页
  • 网站建设如何就接入支付宝企业云平台
  • swoole做网站做网站建设的上市公司有哪些
  • 建设银行江苏官网招聘网站网站设置首页连接分类页的视频教程
  • 通过dede访问自己做的网站高端 建站
  • wordpress自定义json温岭新站seo
  • 网站开发的五个阶段wordpress安装在本地
  • 郴州网站建设有哪些sem优化
  • 在百度怎么申请自己的网站深圳网站建设迅美
  • wordpress 企业网站教程网站开发集成软件
  • 专业的西安免费做网站wordpress手机端插件
  • 口碑好网站建设优化大师win10下载
  • 网站建设普及型小程序开发平台好的有哪些
  • 网站建设与管理专业凡科做的网站好吗
  • wordpress添加变量福州seo网站管理
  • 哔哩哔哩免费网站观看网站制作合同书
  • 自流井移动网站建设建设网站的一般步骤
  • 手机导航网站模板上海低价网站建设
  • 如何开公司注册需要多少钱东莞网站推广优化网上推广公司
  • 新闻门户网站制作教育培训网站开发
  • 网站建设公司哪个好一点最近一周的热点新闻