本篇文章给大家分享的是有关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中如何使用时间缀签名函数,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注天达云行业资讯频道。