Rumah pembangunan bahagian belakang tutorial php PHP:6种GET和POST请求发送方法

PHP:6种GET和POST请求发送方法

Aug 08, 2016 am 09:33 AM
data http nbsp request url

在i94web博客中,我试过了畅言和多说两种社会化评论框,后来还是抛弃了畅言,不安全。

无论是畅言还是多说,我都需要从远程抓取文章的评论数,然后存入本地数据库。对于多说,请求的格式如下:

<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>
Salin selepas log masuk

 

对于远程请求,有很多种方法。今天,LZ就搜罗了六种,供大家参考。

1、用file_get_contents 以get方式获取内容:

<span><?php $url=<span>'http://www.ido321.com/'</span>;
$html = file_get_contents($url);
<span>echo</span> $html;
?>
Salin selepas log masuk

 

   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>
Salin selepas log masuk

 

 

3、用file_get_contents 以post方式获取内容:

<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>
Salin selepas log masuk

 

 

    4、用fsockopen函数打开url,以get方式获取完整的数据,包括header和body,fsockopen需要 PHP.ini 中 allow_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>
Salin selepas log masuk

 

 

     5、用fsockopen函数打开url,以POST方式获取完整的数据,包括header和body

<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>
Salin selepas log masuk

 

 

    6、使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展

<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>
Salin selepas log masuk

 

原文首发:http://www.ido321.com/1297.html
下一篇:CSS 3的display:盒类型详解

以上就介绍了PHP:6种GET和POST请求发送方法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

10 Cara untuk Melaraskan Kecerahan pada Windows 11 10 Cara untuk Melaraskan Kecerahan pada Windows 11 Dec 18, 2023 pm 02:21 PM

Kecerahan skrin adalah bahagian penting dalam menggunakan peranti pengkomputeran moden, terutamanya apabila anda melihat skrin untuk jangka masa yang lama. Ia membantu anda mengurangkan ketegangan mata, meningkatkan kebolehbacaan dan melihat kandungan dengan mudah dan cekap. Walau bagaimanapun, bergantung pada tetapan anda, kadangkala sukar untuk mengurus kecerahan, terutamanya pada Windows 11 dengan perubahan UI baharu. Jika anda menghadapi masalah melaraskan kecerahan, berikut ialah semua cara untuk mengurus kecerahan pada Windows 11. Cara Menukar Kecerahan pada Windows 11 [10 Cara Diterangkan] Pengguna monitor tunggal boleh menggunakan kaedah berikut untuk melaraskan kecerahan pada Windows 11. Ini termasuk sistem desktop menggunakan monitor tunggal serta komputer riba. Jom mulakan. Kaedah 1: Gunakan Pusat Tindakan Pusat Tindakan boleh diakses

Bagaimana untuk mematikan pengesahan penyemakan imbas peribadi pada iPhone dalam Safari? Bagaimana untuk mematikan pengesahan penyemakan imbas peribadi pada iPhone dalam Safari? Nov 29, 2023 pm 11:21 PM

Dalam iOS 17, Apple memperkenalkan beberapa ciri privasi dan keselamatan baharu kepada sistem pengendalian mudah alihnya, salah satunya adalah keupayaan untuk memerlukan pengesahan dua faktor untuk tab penyemakan imbas peribadi dalam Safari. Begini cara ia berfungsi dan cara mematikannya. Pada iPhone atau iPad yang menjalankan iOS 17 atau iPadOS 17, penyemak imbas Apple kini memerlukan pengesahan Face ID/Touch ID atau kod laluan jika anda mempunyai sebarang tab Penyemakan Imbas Peribadi terbuka di Safari dan kemudian keluar dari sesi atau apl untuk mengaksesnya semula. Dalam erti kata lain, jika seseorang mendapatkan iPhone atau iPad anda semasa ia dibuka kunci, mereka masih tidak akan dapat melihat privasi anda tanpa mengetahui kod laluan anda

Apakah maksud kod status http 520? Apakah maksud kod status http 520? Oct 13, 2023 pm 03:11 PM

Kod status HTTP 520 bermakna pelayan mengalami ralat yang tidak diketahui semasa memproses permintaan dan tidak dapat memberikan maklumat yang lebih khusus. Digunakan untuk menunjukkan bahawa ralat tidak diketahui berlaku semasa pelayan memproses permintaan, yang mungkin disebabkan oleh masalah konfigurasi pelayan, masalah rangkaian atau sebab lain yang tidak diketahui. Ini biasanya disebabkan oleh isu konfigurasi pelayan, isu rangkaian, kelebihan beban pelayan atau ralat pengekodan. Jika anda menghadapi ralat kod status 520, sebaiknya hubungi pentadbir tapak web atau pasukan sokongan teknikal untuk mendapatkan maklumat dan bantuan lanjut.

Skrip pengaktifan digital Win10/11 MAS versi 2.2 menyokong semula pengaktifan digital Skrip pengaktifan digital Win10/11 MAS versi 2.2 menyokong semula pengaktifan digital Oct 16, 2023 am 08:13 AM

Skrip pengaktifan terkenal versi MAS2.2 menyokong pengaktifan digital sekali lagi Kaedah ini berasal dari @asdcorp dan pengarang MAS memanggilnya HWID2. Muat turun gatherosstate.exe (bukan asal, diubah suai) daripada https://github.com/massgravel/Microsoft-Activation-Scripts, jalankannya dengan parameter dan jana GenuineTicket.xml. Mula-mula lihat kaedah asal: gatherosstate.exePfn=xxxxxxx;DownlevelGenuineState=1 dan kemudian bandingkan dengan kaedah terkini: gatheros

Mengapa NameResolutionError(self.host, self, e) daripada e dan cara menyelesaikannya Mengapa NameResolutionError(self.host, self, e) daripada e dan cara menyelesaikannya Mar 01, 2024 pm 01:20 PM

Sebab ralat adalah NameResolutionError(self.host,self,e)daripada, yang merupakan jenis pengecualian dalam pustaka urllib3 Sebab ralat ini adalah bahawa resolusi DNS gagal, iaitu nama hos atau alamat IP yang telah cuba diselesaikan tidak dapat ditemui. Ini mungkin disebabkan oleh alamat URL yang dimasukkan tidak betul atau pelayan DNS tidak tersedia buat sementara waktu. Bagaimana untuk menyelesaikan ralat ini Mungkin terdapat beberapa cara untuk menyelesaikan ralat ini: Semak sama ada alamat URL yang dimasukkan adalah betul dan pastikan ia boleh diakses Pastikan pelayan DNS tersedia, anda boleh cuba menggunakan arahan "ping" dalam baris arahan untuk menguji sama ada pelayan DNS tersedia Cuba akses tapak web menggunakan alamat IP dan bukannya nama hos jika di belakang proksi

Apakah perbezaan antara html dan url Apakah perbezaan antara html dan url Mar 06, 2024 pm 03:06 PM

Perbezaan: 1. Definisi yang berbeza, url ialah pencari sumber seragam, dan html ialah bahasa penanda hiperteks 2. Terdapat banyak url dalam html, tetapi hanya satu halaman html boleh wujud dalam url 3. html merujuk kepada; halaman web, dan url merujuk kepada alamat tapak web.

Fahami senario aplikasi biasa pengalihan halaman web dan fahami kod status HTTP 301 Fahami senario aplikasi biasa pengalihan halaman web dan fahami kod status HTTP 301 Feb 18, 2024 pm 08:41 PM

Kuasai maksud kod status HTTP 301: Senario aplikasi biasa pengalihan halaman web Dengan perkembangan pesat Internet, keperluan orang ramai untuk interaksi halaman web menjadi lebih tinggi dan lebih tinggi. Dalam bidang reka bentuk web, pengalihan halaman web adalah teknologi biasa dan penting, dilaksanakan melalui kod status HTTP 301. Artikel ini akan meneroka maksud kod status HTTP 301 dan senario aplikasi biasa dalam pengalihan halaman web. Kod status HTTP301 merujuk kepada ubah hala kekal (PermanentRedirect). Apabila pelayan menerima pelanggan

http meminta penyelesaian ralat 415 http meminta penyelesaian ralat 415 Nov 14, 2023 am 10:49 AM

Penyelesaian: 1. Semak Content-Type dalam tajuk permintaan 2. Semak format data dalam badan permintaan 3. Gunakan format pengekodan yang sesuai 5. Semak sokongan sisi pelayan;

See all articles