在系统启用了session的情况下,通过相同浏览器的地址栏去访问接口$request中会多出一些字段

由于使用了session_start,对session新加了一些字段,这样导致在进行签名验证加密的时候可能加入一些字段,导致加密出来的结果不同。

解决方法:更换一个session没启用的浏览器,或者在签名验证的时候利用foreach将无用的签名数据unset掉。

function create_sign($app_key,$app_secret,$data){
    if(!isset($GLOBALS['context']->config['api_version'])){
        $api_version = 1;
    }else{
        $api_version = $GLOBALS['context']->config['api_version'];
    }

    if(isset($api_version) && $api_version == 2){
        unset($data['sign']);
        ksort($data);
            
        $sign = "";
        foreach ($data as $k=>$v){
            $sign .= $k.$v;
        }
        //echo $sign = md5_3($app_key . $sign . $app_secret);exit;
        $sign = md5_3($app_key . $sign . $app_secret);
    }else{
        $sign = md5($app_key.$app_secret.add_day_time());
    }
    
    return $sign;
}


你可能感兴趣的:(在系统启用了session的情况下,通过相同浏览器的地址栏去访问接口$request中会多出一些字段)