本文目錄一覽:
- 1、php中如何調用接口以及編寫接口代碼詳解
- 2、用PHP如何實現數字簽名啊··跪求高人指點···
- 3、php如何做數字簽名?
- 4、php 請求接口數據方法,調用傳參數,求代碼
- 5、PHP—APP接口02
php中如何調用接口以及編寫接口代碼詳解
可以用curl獲取借樓的信息。
所謂接口,就是提供一個url,只要你滿足它要求的參數,就能得到你要的數據。比如你拿到一個接口,帶上所需的參數,複製到地址欄同樣能得到。不過最好用程序得到。file_get_contents也可以用,不過有局限性。所以我建議用curl。給你一個函數,挺好用的。
function request($url,$https=true,$method=’GET’,$data=null){
$ch = curl_init();//初始化,得到資源
curl_setopt($ch, CURLOPT_URL,$url); //請求數據的路徑
curl_setopt($ch, CURLOPT_HEADER,false);//是否輸出頭
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不直接輸出結果
//curl_setopt ($ch, CURLOPT_SAFE_UPLOAD, 0);//兼容php之後的版本
if($https){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //是否驗證主機
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //是否進行證書驗證
}
if($method==’POST’){
curl_setopt($ch, CURLOPT_POST, true); //POST傳輸
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //傳輸數據
}
$content_json = curl_exec($ch);
if ($content_json === false) {
return “網絡請求出錯: ” . curl_error($ch);
}
curl_close($ch);
return $content_json;
}
用PHP如何實現數字簽名啊··跪求高人指點···
以下是資料:
php中數字簽名與校驗
1. 先用php生成一對公鑰和私鑰
$res = openssl_pkey_new();
openssl_pkey_export($res,$pri);
$d= openssl_pkey_get_details($res);
$pub = $d[‘key’];
var_dump($pri,$pub);
輸出依次為私鑰和公鑰的pem字串,如:
string(916) “—–BEGIN PRIVATE KEY—–
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKs124okAnX5jh1Q
wsETi80b4ZyYlYUSsAtvS7ZG+GSLAox24TKNwWIy5cUdKfK/5QEJjZ0S8LjRSYCG
to9LkwQTQrKY8BBXVCQQS3VXRqz4on9bmcGSyLMK6vQxt9NnJpk6aBmJE7z35+8z
TTLwdUbYaMAcYqrsYDfgBSNBgwbDAgMBAAECgYBvolJfpFMmcW3El6AlHIWPW5qj
7KmxdxnqmssXMvdLN4iV5f24ZM2vJdjDydxMN+st3fjEblEfcPcoIq5uiKx2bnO3
f9g0yt+qUoXdz4LK6jV1NfuAZDcnBm7CXfE7BDREgyiRg4ZXIvp4L0Y2zBMdFTmg
LKkXb2M1P3pK53UbwQJBANupqPXFQjdHvAa3voT+UI8OhmLbw/Vyh6Ii1glwMfyq
VS2lAakj9d1hqLYZvw+eNeZBnzZNPuMJg5aj/WKUqasCQQDHiFLS7Yb1rbhfjmRt
ZL4zXuvX1hVjTNo2TeZwPniGpYa+QHcauDDep5C9q//n+D+ZtkbkECxpOVhrUHSI
KO9JAkEApl3lHd98uymVevEHVurWUMMLfSw9SlSn7WC9AwD6mwbW5G8oxtX5jOY+
RU1Sq52D7RSeZR40FvhJtXoWmudFaQJAc8E+a2epF/YENEtjL6N2RE8Y+0oTdlwr
a72dphhXy6VTmiPD9RhOIZ2MdrzF5Uk7fG0mi0Bmw1SlWvx93lABIQJBALXPeoNa
b4dQkRkfqCHtyrWOeRcC1Y6FyTfNj+cRBzdIcmFc21hxj6HKy2M6/XGI3rAE5L+B
mmlSmN1enhoCUqc=
—–END PRIVATE KEY—–
“
string(272) “—–BEGIN PUBLIC KEY—–
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrNduKJAJ1+Y4dUMLBE4vNG+Gc
mJWFErALb0u2RvhkiwKMduEyjcFiMuXFHSnyv+UBCY2dEvC40UmAhraPS5MEE0Ky
mPAQV1QkEEt1V0as+KJ/W5nBksizCur0MbfTZyaZOmgZiRO89+fvM00y8HVG2GjA
HGKq7GA34AUjQYMGwwIDAQAB
—–END PUBLIC KEY—–
“
2. 保存好自己的私鑰,把公鑰可以公開給別人。如果需要對某數據進行簽名,證明那數據是從你這裡發出的,就需要用私鑰:
$res = openssl_pkey_get_private($pri);
if (openssl_sign(‘hello’, $out, $res))
var_dump(base64_encode($out));
上例中 $pri 為自己的私鑰,’hello’ 為待簽名的數據,如果簽名成功,最後輸出為base64編碼後的簽名,如:
j19H+C/NQEcyowezOQ+gmGi2UoPJNXyJ+KwpkEzJ5u4qaRD3cY4qhfFfIosypypwJTJ4LjRYOIPNQMQm6ICj2nMdGfn/p/pp7il+xGz2aUWdOXkJFgIc/PGC95C9sLH04Tc6QSuV5IMd9rjBjyv+ieokMLFm9cmtN2hGag9vq1s=
3. 別人收到你的數據 ‘hello’ 和簽名字串,想驗證這是從你發來的數據的話,用你公開的公鑰驗證:
$sig = base64_decode($sig);
$res = openssl_pkey_get_public($pubkey);
if (openssl_verify(‘hello’, $sig, $res) === 1)
; // 通過驗證
上例中剛開始的 $sig 為之前你base64編碼過的簽名, $pubkey 為你的公鑰
php中這種簽名使用的是RSA算法;數字簽名可以在 單點登錄 等系統中派上用場。
php如何做數字簽名?
概括就是:“學會用PHP的openssl擴展!!”
1、先用openssl_pkey_new()函數產生一個私鑰pri_key,
2、用openssl_csr_new()函數以私鑰pri_key 產生一個信用證csr
3、用openssl_sign()函數以私鑰pri_key對一段數據data產生一個數字簽名signature。
4、用openssl_pkey_get_public()函數從信用證csr中獲得公鑰pub_key
5、把公鑰pub_key、數字簽名signature、數據data發給對方。
6、對方收到3項後,用openssl_verify()函數或其他驗證工具,驗證簽名。
7、對方驗證有效,開始使用你的信息data。驗證無效,再找你扯皮。
整個過程的雙方可以互換,即可讓對方出具三項,你來驗證。
php 請求接口數據方法,調用傳參數,求代碼
/**
* 公用方法 post
* @param $url 鏈接
* @param $data 數據
* @param $api api 執行操作參數 add update del
* @return $result
*/
function sendHttpPost($url, $data = [], $api = ‘list’)
{
$url = C(‘URL_API’) . $url;
$param = [
‘ver’ = C(‘API_VER’),
‘api’ = $api,
‘date’ = time(),
‘DATA’ = $data
];
$data = json_encode($param);
print_r($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($ch);
// var_dump($data);
return $result;
}
PHP—APP接口02
JSONXML
XML: 是一種標記語言,設計的宗旨是傳輸數據
JSON: 輕量級的數據交換格式
APP接口主要是用JSON輸出格式
APP接口輸出格式三要素:
1. code::錯誤碼
2. msg:錯誤碼對應的描述
3. data:接口返回的數據
誰有權限調用APP接口,客戶端需要帶着憑證來調用APP接口
JWT的原理:
服務端認證之後,生成一個JSON對象,返回給用戶。後續客戶端所有請求都會帶上這個JSON對象。服務端依靠這個JSON對象來認定用戶身份。
組成: Header, Payload, Signature
1. Header
說一下我是什麼
header通常包含了兩部分:類型和加密算法
{
“alg”: “HS256”,
“typ”: “JWT”
}
header需要經過Base64Url編碼後作為IWT的第一部分。
2. Payload
payload包含了claim, 三種類型reserved, public, private
reserved這些claim是JWT預先定義的,不強制使用,常用的有:
1). iss: 簽發者
2). exp: 過期的時間戳
3). sub: 面向的用戶
4). aud: 接收方
5). iat: 簽發時間
{
“sub”: “1234567890”,
“name”: “John Doe”,
“admin”: true
}
payload需要經過Base64Url編碼後作為JWT的第二部分。
3. Signature
創建簽名使用編碼後的header和payload以及一個密匙,使用header中指定的簽名算法進行簽名
HMACSHA256(
base64UrlEncode(header) + “.” +
base64UrlEncode(payload),
secret
)
簽名是在服務端進行的,客戶端並不知道,所以是安全的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/310141.html