码迷,mamicode.com
首页 > Web开发 > 详细

php时间缀签名函数

时间:2018-12-28 10:46:41      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:签名   过期   代码   字符串   val   md5   sha   时间   ext   

  • 代码:
    <?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时间缀签名函数

    标签:签名   过期   代码   字符串   val   md5   sha   时间   ext   

    原文地址:http://blog.51cto.com/12173069/2336228

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!