i94web 블로그에서 소셜댓글창 2개, Changyan과 Duosuo를 사용해봤으나 나중에 안전하지 않아 Changyan을 포기했습니다.
자유롭게 말하든, 말을 많이 하든 원격으로 기사의 댓글 수를 파악하여 로컬 데이터베이스에 저장해야 합니다. 듀오다오의 경우 요청 형식은 다음과 같습니다.
<span>// 获取评论次数,参数是文章ID</span><span> <span>function</span> getCommCount($postid) { $jsondata = file_get_contents(<span>"http://api.duoshuo.com/threads/counts.json?short_name=i94web&threads=$postid"</span>); <span>// 设置true返回数组,不设置或者是false则返回对象</span> $resjson= json_decode($jsondata,<span>true</span>); <span>return</span> $resjson[<span>'response'</span>][$postid][<span>'comments'</span>]; }</span>
원격요청의 경우 다양한 방법이 있습니다. 오늘 LZ에서는 여러분의 참고를 위해 6가지 유형을 모아봤습니다.
1. get 모드에서 콘텐츠를 가져오려면 file_get_contents를 사용하세요.
<span><?php $url=<span>'http://www.ido321.com/'</span>; $html = file_get_contents($url); <span>echo</span> $html; ?></span>
2. fopen을 사용하여 URL을 열고 get 메소드를 사용하여
을 얻습니다.
<span>$fp = fopen($url, <span>'r'</span>); stream_get_meta_data($fp); <span>while</span>(!feof($fp)) { $result .= fgets($fp, 1024); } <span>echo</span> <span>"url body: $result"</span>; fclose($fp);</span>
3. 포스트 모드에서 콘텐츠를 가져오려면 file_get_contents를 사용하세요.
<span>$data = <span>array</span> (<span>'foo'</span> => <span>'bar'</span>); $data = http_build_query($data); $opts = <span>array</span> ( <span>'http'</span> => <span>array</span> ( <span>'method'</span> => <span>'POST'</span>, <span>'header'</span>=> <span>"Content-type: application/x-www-form-urlencodedrn"</span> . <span>'Content-Length: '</span> . strlen($data) . <span>'rn'</span>, <span>'content'</span> => $data ) ); $context = stream_context_create($opts); $html = file_get_contents(<span>'http://localhost/e/admin/test.html'</span>, <span>false</span>, $context); <span>echo</span> $html;</span>
4. fsockopen 함수를 사용하여 URL을 열고 헤더 및 본문을 포함하여 get 메소드를 통해 전체 데이터를 얻습니다. fsockopen을 사용하려면 PHP.ini에서 허용_url_fopen 옵션을 켜야 합니다.
<span>function</span><span> get_url ($url,$cookie=<span>false</span>) { $url = parse_url($url); $query = $url[path].<span>'?'</span>.$url[query]; <span>echo</span> <span>'Query:'</span>.$query; $fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30); <span>if</span> (!$fp) { <span>return</span> <span>false</span>; } <span>else</span> { $request = <span>'GET $query HTTP/1.1rn'</span>; $request .= <span>'Host: $url[host]rn'</span>; $request .= <span>'Connection: Closern'</span>; <span>if</span>($cookie) $request.=<span>'Cookie: $cookien'</span>; $request.=<span>'rn'</span>; fwrite($fp,$request); <span>while</span>(!@feof($fp)) { $result .= @fgets($fp, 1024); } fclose($fp); <span>return</span> $result; } } <span>//获取url的html部分,去掉header</span> <span>function</span> GetUrlHTML($url,$cookie=<span>false</span>) { $rowdata = get_url($url,$cookie); <span>if</span>($rowdata) { $body= stristr($rowdata,<span>'rnrn'</span>); $body=substr($body,4,strlen($body)); <span>return</span> $body; } <span>return</span> <span>false</span>; }</span>
5. fsockopen 함수를 사용하여 URL을 열고 POST를 통해 헤더와 본문을 포함한 전체 데이터를 가져옵니다.
<span>function</span><span> HTTP_Post($URL,$data,$cookie, $referrer=<span>''</span>) { <span>// parsing the given URL</span> $URL_Info=parse_url($URL); <span>// Building referrer</span> <span>if</span>($referrer==<span>''</span>) <span>// if not given use this script as referrer</span> $referrer=<span>'111'</span>; <span>// making string from $data</span> <span>foreach</span>($data <span>as</span> $key=>$value) $values[]=<span>'$key='</span>.urlencode($value); $data_string=implode(<span>'&'</span>,$values); <span>// Find out which port is needed – if not given use standard (=80)</span> <span>if</span>(!<span>isset</span>($URL_Info[<span>'port'</span>])) $URL_Info[<span>'port'</span>]=80; <span>// building POST-request:</span> $request.=<span>"POST "</span>.$URL_Info[<span>'path'</span>].<span>" HTTP/1.1n"</span>; $request.=<span>"Host: "</span>.$URL_Info[<span>'host'</span>].<span>"n"</span>; $request.=<span>"Referer: $referern"</span>; $request.=<span>"Content-type: application/x-www-form-urlencodedn"</span>; $request.=<span>'Content-length: '</span>.strlen($data_string).<span>"n"</span>; $request.=<span>'Connection: closen'</span>; $request.=<span>'Cookie: $cookien'</span>; $request.=<span>'n'</span>; $request.=$data_string.<span>'n'</span>; $fp = fsockopen($URL_Info[<span>'host'</span>],$URL_Info[<span>'port'</span>]); fputs($fp, $request); <span>while</span>(!feof($fp)) { $result .= fgets($fp, 1024); } fclose($fp); <span>return</span> $result; }</span>
6. 컬 라이브러리를 사용하세요. 컬 라이브러리를 사용하기 전에 php.ini에서 컬 확장 기능이 켜져 있는지 확인해야 할 수도 있습니다
<span>$ch = curl_init(); $timeout = 5; curl_setopt ($ch, CURLOPT_URL, ‘http:<span>//www.ido321.com/');</span> curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file_contents = curl_exec($ch); curl_close($ch); <span>echo</span> $file_contents;</span>
원본 기사 최초 공개: http://www.ido321.com/1297.html
다음 기사: CSS 3 표시: 상자 유형에 대한 자세한 설명
위 내용은 관련 내용을 포함하여 PHP: 6 GET 및 POST 요청 전송 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.