{"id":1484,"date":"2021-10-18T23:38:40","date_gmt":"2021-10-18T15:38:40","guid":{"rendered":"https:\/\/www.siediyer.cn\/?p=1484"},"modified":"2021-10-18T23:38:40","modified_gmt":"2021-10-18T15:38:40","slug":"api%e6%8e%a5%e5%8f%a3%e5%8a%a0%e5%af%86%e6%96%b9%e6%b3%95api%e6%8e%a5%e5%8f%a3%e5%8a%a0%e5%af%86%e4%bb%a3%e7%a0%81%e5%88%86%e4%ba%ab","status":"publish","type":"post","link":"https:\/\/www.siediyer.cn\/?p=1484","title":{"rendered":"API\u63a5\u53e3\u52a0\u5bc6\u65b9\u6cd5API\u63a5\u53e3\u52a0\u5bc6\u4ee3\u7801\u5206\u4eab"},"content":{"rendered":"<p>API\u63a5\u53e3\u52a0\u5bc6\u6821\u9a8c\u6e90\u4ee3\u7801\u5206\u4eab<\/p>\n<p>API\u63a5\u53e3\u505a\u597d\u4e86\uff0c\u603b\u4e0d\u80fd\u88f8\u5954\u8c03\u7528\u5427\uff0c\u4e5f\u4e0d\u80fd\u5728HTTP\/HTTS\u91cc\u952e\u5165\u7ea6\u5b9a\u7684\u5bc6\u94a5\u6a21\u5f0f\uff0c\u4e0b\u9762\u7ed9\u5927\u5bb6\u4ecb\u7ecd\u4e00\u79cd\u7b80\u5355\u7684API\u63a5\u53e3\u52a0\u5bc6\u9a8c\u8bc1<\/p>\n<p><strong>API\u63a5\u53e3\u52a0\u5bc6\u901a\u4fe1\u601d\u8def\uff1a<\/strong><\/p>\n<p>1. \u7ea6\u5b9a\u5bc6\u94a5\uff0c\u5bc6\u94a5\u5728\u5b9e\u9645\u64cd\u4f5c\u4e2d\u53ef\u4ee5\u505a\u4e2a\u914d\u7f6e\u6587\u4ef6\uff0c\u968f\u610f\u66f4\u6362<\/p>\n<p>2. \u751f\u6210\u65f6\u95f4\u6233\u3001\u968f\u673a\u6570\u3001\u7b7e\u540d\u751f\u6210\u7684\u5b57\u7b26\u4e32<\/p>\n<p>3.\u63a8\u9001\u5230API\u670d\u52a1\u7aef\u505a\u52a0\u5bc6\u6821\u5bf9\u8bc6\u522b<\/p>\n<p>&nbsp;<\/p>\n<p><strong>API\u63a5\u53e3\u901a\u4fe1\u670d\u52a1\u7aef\u52a0\u5bc6\u7c7b\u6e90\u4ee3\u7801\u7c7b<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">class encry {\r\n    const TOKEN = 'API';\r\n    \/\/\u54cd\u5e94\u524d\u53f0\u7684\u8bf7\u6c42\r\n    public function respond(){\r\n        \/\/\u9a8c\u8bc1\u8eab\u4efd\uff1b\u63a5\u6536\u524d\u53f0\u4f20\u8fc7\u6765\u7684\u53c2\u6570\r\n        $timeStamp = isset($_GET['t']) ? $_GET['t'] :'';\/\/\u65f6\u95f4\r\n        $randomStr = isset($_GET['r']) ? $_GET['r'] :'';\/\/\u968f\u673a\u6570\r\n        $signature = isset($_GET['s']) ? $_GET['s'] :'';\/\/\u7b7e\u540d\r\n        $str = $this -&gt; arithmetic($timeStamp,$randomStr);\/\/\u901a\u8fc7\u524d\u53f0\u4f20\u8fc7\u6765\u7684\u65f6\u95f4\u6233\u8ddf\u968f\u673a\u6570\u91cd\u65b0\u6309\u7167\u7b7e\u540d\u51fd\u6570\u8fdb\u884c\u751f\u6210\u4e00\u904d\u7b7e\u540d\r\n\/\/\u7136\u540e\u5c06\u4f20\u8fc7\u6765\u7b7e\u540d\u8ddf\uff0c\u81ea\u5df1\u91cd\u65b0\u751f\u6210\u7684\u7b7e\u540d\u8fdb\u884c\u6bd4\u5bf9\r\n        if($str != $signature){\r\n            $arr['success'] = '0';\r\n            $arr['msg'] = '\u65e0\u6743\u8bbf\u95ee';\r\n        }\r\n        else{\r\n            $arr['success'] = '1';\r\n            $arr['msg'] = 'success';\r\n        }\r\n        echo json_encode($arr,JSON_UNESCAPED_UNICODE);\r\n    }\r\n\r\n    \/**\r\n     * @param $timeStamp \u65f6\u95f4\u6233\r\n     * @param $randomStr \u968f\u673a\u5b57\u7b26\u4e32\r\n     * @return string \u8fd4\u56de\u7b7e\u540d\r\n     *\/\r\n    public function arithmetic($timeStamp,$randomStr){\r\n        $arr['timeStamp'] = $timeStamp;\r\n        $arr['randomStr'] = $randomStr;\r\n        $arr['token'] = self::TOKEN;\r\n        \/\/\u6309\u7167\u9996\u5b57\u6bcd\u5927\u5c0f\u5199\u987a\u5e8f\u6392\u5e8f\r\n        sort($arr,SORT_STRING);\r\n        $str = implode($arr);\/\/\u62fc\u63a5\u6210\u5b57\u7b26\u4e32\r\n        $signature = sha1($str);\/\/SHA-1\u52a0\u5bc6\r\n        $signature = md5($signature);\/\/MD5=\u52a0\u5bc6\r\n        $signature = strtoupper($signature);\/\/\u8f6c\u6362\u6210\u5927\u5199\r\n        return $signature;\r\n    }\r\n}<\/pre>\n<p><strong>\u5ba2\u6237\u7aef\u8c03\u7528API\u63a5\u53e3\u63a8\u9001\u52a0\u5bc6\u4ee3\u7801\u7c7b<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">class apiget{\r\n    const TOKEN = 'API';\/\/\u5bc6\u94a5\r\n    const APIURL = 'http:\/\/www.68v8.com\/api.php';\/\/\u6a21\u62df\u524d\u53f0\u8bf7\u6c42\u670d\u52a1\u5668api\u63a5\u53e3\r\n    public function getDataFromServer(){\r\n        $timeStamp = time();\/\/\u65f6\u95f4\u6233\r\n        $randomStr = $this -&gt; createNonceStr();\/\/\u968f\u673a\u6570\r\n        $signature = $this -&gt; arithmetic($timeStamp,$randomStr);\/\/\u751f\u6210\u7b7e\u540d\uff0c\u8fd9\u91cc\u751f\u6210\u7b7e\u540d\u65b9\u6cd5\u81ea\u5df1\u5b9a\u4e49\uff0c\u53ef\u4ee5\u7528\u8fd9\u4e2a\u65b9\u6cd5\uff0c\u4e5f\u53ef\u4ee5\u7528\u975e\u5bf9\u79f0\u52a0\u5bc6\u90fd\u53ef\u4ee5\uff1b\r\n        $url = self::APIURL.\"?t={$timeStamp}&amp;r={$randomStr}&amp;s={$signature}\";\/\/url\u5730\u5740\uff1a\u5730\u5740\u4e2d\u4f20\u9012\u7684\u4e09\u4e2a\u53c2\u6570\uff0c\u53ef\u4ee5\u76f4\u63a5\u8fd9\u6837\u4f20\u9012\uff0c\u4e5f\u53ef\u4ee5\u7528\u975e\u5bf9\u79f0\u52a0\u5bc6\u52a0\u5bc6\u5b8c\u6210\u540e\u518d\u4f20\u5230\u5730\u5740\u4e2d\u90fd\u53ef\u4ee5\r\n        $result = $this -&gt; httpGet($url);\r\n        echo($result);\r\n    }\r\n\r\n    \/\/curl\u6a21\u62dfget\u8bf7\u6c42\u3002\r\n    private function httpGet($url){\r\n        $curl = curl_init();\r\n        curl_setopt($curl,CURLOPT_URL,$url);\/\/\u9700\u8981\u8bf7\u6c42\u7684\u662f\u54ea\u4e2a\u5730\u5740\r\n        curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);\/\/\u8868\u793a\u628a\u8bf7\u6c42\u7684\u6570\u636e\u5df2\u6587\u4ef6\u6d41\u7684\u65b9\u5f0f\u8f93\u51fa\u5230\u53d8\u91cf\u4e2d\r\n        $result = curl_exec($curl);\r\n        curl_close($curl);\r\n        return $result;\r\n    }\r\n\r\n    \/\/\u968f\u673a\u751f\u6210\u5b57\u7b26\u4e32\r\n    private function createNonceStr($length = 8) {\r\n        $chars = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\r\n        $str = \"\";\r\n        for ($i = 0; $i &lt; $length; $i++) {\r\n            $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);\r\n        }\r\n        return \"z\".$str;\r\n    }\r\n\r\n    \/**\r\n     * @param $timeStamp \u65f6\u95f4\u6233\r\n     * @param $randomStr \u968f\u673a\u5b57\u7b26\u4e32\r\n     * @return string \u8fd4\u56de\u7b7e\u540d\r\n     *\/\r\n    private function arithmetic($timeStamp,$randomStr){\r\n        $arr['timeStamp'] = $timeStamp;\r\n        $arr['randomStr'] = $randomStr;\r\n        $arr['token'] = self::TOKEN;\r\n        \/\/\u6309\u7167\u9996\u5b57\u6bcd\u5927\u5c0f\u5199\u987a\u5e8f\u6392\u5e8f\r\n        sort($arr,SORT_STRING);\r\n        $str = implode($arr);\/\/\u62fc\u63a5\u6210\u5b57\u7b26\u4e32\r\n        $signature = sha1($str);\/\/SHA-1\u52a0\u5bc6\u52a0\u5bc6\r\n        $signature = md5($signature);\/\/MD5\u52a0\u5bc6\r\n        $signature = strtoupper($signature);\/\/\u8f6c\u6362\u6210\u5927\u5199\r\n        return $signature;\r\n    }\r\n}<\/pre>\n<p>\u8c03\u7528\u7c7b<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">$apiget = new apiget();\r\n$apiget-&gt;getDataFromServer();<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>API\u63a5\u53e3\u52a0\u5bc6\u6821\u9a8c\u6e90\u4ee3\u7801\u5206\u4eab API\u63a5\u53e3\u505a\u597d\u4e86\uff0c\u603b\u4e0d\u80fd\u88f8\u5954\u8c03\u7528\u5427\uff0c\u4e5f\u4e0d\u80fd\u5728HTTP\/HTTS\u91cc\u952e\u5165\u7ea6\u5b9a\u7684\u5bc6\u94a5\u6a21 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1484","post","type-post","status-publish","format-standard","hentry","category-php"],"_links":{"self":[{"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/posts\/1484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1484"}],"version-history":[{"count":1,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/posts\/1484\/revisions"}],"predecessor-version":[{"id":1485,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/posts\/1484\/revisions\/1485"}],"wp:attachment":[{"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}