self::TIME) { return -8; } $request['token'] = self::token($token); } # 此处后边要加上防止重复请求的记录,用redis来记录即可 $signature = self::signature($request, $type); if ($check != $signature) { return -9; } return $signature; } /** * signature * * @return mixed */ public static function signature($request = array(), $type = 'sha1', $suffix = '', $empty = true) { ksort($request); if(isset($request['controller'])){ unset($request['controller']); } if(isset($request['function'])){ unset($request['function']); } if(isset($request['sign'])){ unset($request['sign']); } if(isset($request['signature'])){ unset($request['signature']); } $signature_string = ''; foreach ($request as $k => $v) { if (strstr($v, 'http') && !strstr($v, '%')) { $v = urlencode($v); } if (!$empty) { $signature_string .= $k . '=' . $v . '&'; } elseif (strlen($v) && $v != 'empty') { $signature_string .= $k . '=' . $v . '&'; } } if ($suffix != '&') { $signature_string = substr($signature_string, 0, -1) . $suffix; } // var_dump($signature_string);die; return $type($signature_string); } /** * token * * @return mixed */ public static function token($token, $type = 'sha1') { if ($token) { self::$token = $token; } return $type(self::$token); } /** * nonce * * @return mixed */ public static function nonce() { return substr(sha1(microtime()), rand(10, 15)); } /** * timestamp * * @return mixed */ public static function timestamp() { list($msec, $sec) = explode(' ', microtime()); $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000); return $msectime; } }