php时间缀签名函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php时间缀签名函数相关的知识,希望对你有一定的参考价值。
- 代码:
<?php /* * 生成md5加密字符串 * @author lee * @param 需要进行验证的参数 * @return md5_str 生成的md5加密字符串 */ function get_md5_str($data){ ksort($data); $str = ‘‘; foreach($data as $k=>$v){ $str .= "{$k}={$v}&"; } $md5_str = md5($str); return $md5_str; } /* * 时间缀验签名验证 * @author lee * @param data 需要验证的参数 * @param valid_str md5加密字符串 * @param expire 过期时间,默认1分钟 * @return bool true,通过验证;false,验证失败 */ function time_valid($data,$valid_str,$expire = 1){ $time = time(); // 1、格式不正确,验证不通过 if(!is_array($data)){ return false; } // 2、时间缀未传,验证不通过 if(!$data[‘timestamp‘]){ return false; } // 3、时间缀不在有效范围内,验证不通过 if(($data[‘timestamp‘] < ($time - $expire * 60)) || ($data[‘timestamp‘] > ($time + $expire * 60))){ return false; } ksort($data); $str = ‘‘; foreach($data as $k=>$v){ $str .= "{$k}={$v}&"; } $md5_str = md5($str); // 4、加密字符串不正确,验证不通过 if($valid_str !== $md5_str){ return false; } return true; }
- 测试:
$arr = array( ‘timestamp‘ => time(), ‘title‘ => ‘标题‘, ‘name‘ => ‘名称‘ ); $md5_str = get_md5_str($arr); $ret = time_valid($arr,$md5_str); var_dump($ret);
- 输出:
以上是关于php时间缀签名函数的主要内容,如果未能解决你的问题,请参考以下文章
php 一个自定义的try..catch包装器代码片段,用于执行模型函数,使其成为一个单行函数调用