代码:
- <?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);
输出:
来源: http://www.bubuko.com/infodetail-2900093.html