1. create_linkstring
说明: 把数组拼接成字符串
1 if (!function_exists('create_linkstring')) { 2 /** 3 * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 4 * @param $para 需要拼接的数组 5 * return 拼接完成以后的字符串 6 */ 7 function create_linkstring($para) 8 { 9 if (!is_array($para)) { 10 return $para; 11 } 12 13 $arg = ""; 14 while (list($key, $val) = each($para)) { 15 $arg.=$key."=".$val."&"; 16 } 17 $arg = substr($arg, 0, -1); 18 19 //如果存在转义字符,那么去掉转义 20 if ( get_magic_quotes_gpc() ) { 21 $arg = stripslashes($arg); 22 } 23 24 return $arg; 25 } 26 }
2. resolve_linkstring
说明: 将URL参数字符串转换成数组
1 if (!function_exists('resolve_linkstring')) { 2 /** 3 * 将URL参数字符串转换成数组 4 * 例如:mobile=18683338411&password=123456形式字符串拆分为数组 5 * array['mobile'=>'18683338412', 'password'=>'123456'] 6 * @param string $para 解析的字符串 7 * @return array|null 8 */ 9 function resolve_linkstring($para) 10 { 11 if (!Str::contains($para, '=')) { 12 return $para; 13 } 14 15 $para = explode('&', $para); 16 $arg = array(); 17 foreach ($para as $val) { 18 list($key, $value) = explode('=', $val); 19 $arg[$key] = $value; 20 } 21 22 return $arg; 23 } 24 }
3. check_signature
说明:URL签名校验
1 if (!function_exists('check_signature')) { 2 /** 3 * 4 * @desc 检查签名是否正确 5 * @param $signature url中的签名 6 * @param $timestamp url中的时间戳 7 * @param $nonce url中的随机字符串 8 * @return int [200 校验成功 1 参数不全 2 时间过期 3签名错误] 9 */ 10 function check_signature($signature, $timestamp, $nonce) 11 { 12 if (empty($signature)|| empty($timestamp) || empty($nonce)) { 13 return 1; 14 } 15 16 // 获得参数校验 【不同场景,配置不同】 17 $secret = config('appinit.secret'); 18 $expire = config('appinit.expire'); 19 20 // 请求时间超过有效期 21 if ( time() >= $expire + $timestamp ) { 22 return 2; 23 } 24 25 $tmpArr = array($secret, $timestamp, $nonce); 26 sort($tmpArr, SORT_STRING); 27 $tmpStr = sha1(implode($tmpArr)); 28 29 return $tmpStr == $signature ? 200 : 3; 30 } 31 }
4. urlsafe_base64_*
说明:安全base64的加解密
1 <?php 2 // 安全base64的加解密 3 if (!function_exists('urlsafe_base64_encode')) { 4 /** 5 * 安全的base64编码 6 * @param string $string 加密字符串 7 * return string 加密数据 8 */ 9 function urlsafe_base64_encode($string) 10 { 11 return str_replace(['+','/','='], ['-','_',''], 12 base64_encode($string)); 13 } 14 } 15 16 if (!function_exists('urlsafe_base64_decode')) { 17 /** 18 * 安全的base64解码 19 * @param string $string 加密数据 20 * return string 解密数据原文 21 */ 22 function urlsafe_base64_decode($string) 23 { 24 $data = str_replace(['-','_'], ['+','/'], $string); 25 $mod4 = strlen($data) % 4; 26 if ( $mod4 ) { 27 $data .= substr('====', $mod4); 28 } 29 30 return base64_decode($data); 31 } 32 } 33 ?>