## sign簽名計算
### 1) 簽名說明
> 將所有傳遞的引數名(不包含sign和timestamp引數)按照字母公升序排序,然後進行url拼接,然後再取其md5碼
> 注意:**sign和timestamp引數不參與md5**
### 2) 舉例:
* 要使用 **查詢授權** api,通過查閱api文件可以知道要傳遞**op、key_cp、user**三個引數
* 即:***op=query&key_cp=aaaaaaaa&user=1330166565***
* 其中的key_cp是對應產品的key,假設我們的後台介面加密key是**bbbbbbbb**
* 首先對**op=query&key_cp=aaaaaaaa&user=1330166565**進行**引數排序**
* 即:**key_cp=aaaaaaaa&op=query&&user=1330166565**
* 然後加上後台介面加密key:**bbbbbbbb**
* 即:***key_cp=aaaaaaaa&op=query&&user=1330166565bbbbbbbb***
* 然後取其md5
* 即:**3862154e10af3d5f63d286b7f2dd03bf** 此值即為**sign**引數的值
* 然後原引數加上**sign**引數,再加上**timestamp**引數
* 即全部引數如下:**op=query&key_cp=aaaaaaaa&user=1330166565&sign=3862154e10af3d5f63d286b7f2dd03bf×tamp=1571578592**
### 3) 固定引數說明:
|欄位名稱 |字段說明 |型別 |必填 |備註 |
|sign|簽名|string|y|簽名|
|timestamp|10位時間戳|string|y|10位時間戳|
### 4) php簽名示例:
function getsign($secret, $data) {
// 對陣列的值按key排序
ksort($data);
// 生成url的形式
// 生成sign
$sign = md5($params . $secret);
return $sign;
$data = array(
'op' => 'change_name',
'name_new' => $name_new,
'key_user' => $key_user,
//$apikey是後台介面加密key
### 5) 易語言簽名示例:
.版本 2
.支援庫 dp1
.子程式 sign計算, 文字型, 公開, 用於提交資料時的sign計算
.引數 params, 文字型, , 提交資料
.引數 key, 文字型, , 後台加密key
.區域性變數 signpars, 文字型
.區域性變數 分割, 文字型, , "0"
.區域性變數 x, 整數型
.區域性變數 k, 文字型
.區域性變數 v, 文字型
.區域性變數 sign, 文字型
分割 = 分割文字 (params, 「&」, )
陣列_排序 (分割, 0, )
.計次迴圈首 (取陣列成員數 (分割), x)
k = 文字_取左邊 (分割 [x], 「=」, , )
v = 文字_取右邊 (分割 [x], 「=」, , )
.如果真 (k ≠ 「sign」 且 v ≠ 「」)
.如果 (x = 取陣列成員數 (分割))
signpars = signpars + k + 「=」 + v
.否則signpars = signpars + k + 「=」 + v + 「&」
.如果結束
.如果真結束
.計次迴圈尾 ()
signpars = signpars + key
sign = 取資料摘要 (到位元組集 (signpars))
返回 (「&sign=」 + sign)
.版本 2
.支援庫 internet
param = 「op=change_name&name_new=」 + 編碼_url編碼 (name_new,,真) + 「&key_user=」 + key_user
return = 編碼_usc2到ansi(到文字 (http讀檔案 (「http://」+**網域名稱+「/api/api_url.php?」 + param + sign計算 (param, 後台介面加密key) + 「×tamp=」 + 時間_取現行時間戳 (真))))
### 6) 常見錯誤:
~~~[api]
常見錯誤1
"status": "0",
"message": "傳送的資料簽名不存在"
常見錯誤2
"status": "0",
"message": "傳送的資料引數不合法"
常見錯誤3
"status": "0",
"message": "驗證失效,請重新傳送請求"
常見錯誤4
"status": "0",
"message": "請求不合法"
php 命令引數
f file 解析並執行 f 選項給定的檔名。該引數為可選引數,可以省略,僅指明需要執行的檔名即可。以下是 php 二進位制檔案 即 php.exe 程式 提供的命令列模式的選項引數,您隨時可以通過 php h 命令來查詢這些引數。usage php options f args.php optio...
php傳入引數
專案中時常會使用php編寫指令碼,進行一些統計與批量更新的需求需要進行操作 其中使用的方式主要是getopt函式,寫法如下 opt getopt m n value m opt m value n opt n 命令列下執行的方式是php test.php m hisen n king if argc...
PHP可變引數
php 在使用者自定義函式中支援可變數量的引數列表。在 php 5.6 及以上的版本中,由 語法實現 在 php 5.5 及更早版本中,使用函式 func num args func get arg 和 func get args function b numbers return acc echo...