PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息,telnetfsockopen
PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息,telnetfsockopen
了解完了HTTP头信息和URL信息的具体内容,我们开始尝试自己动手写一段头信息发送到服务器。Windows内置命令Telnet可以帮助我们发送简单的HTTP请求。
并且TELNET是一个特别灵活的工具,我们还可以用它进行FTP/SMTP/POP3/TCP等方式的简单请求。
通过开始菜单--运行--CMD命令进入DOS状态,
我们输入“Telnet 主机地址 端口(Telnet 192.168.1.99 80)” 来进入telnet命令状态(完全黑窗口,此时输出字符会出问题),我们按”ctrl”+”]”,切回普通CMD窗口,再按”ENTER”回车键进入编辑命令状态。
如果系统提示找不到TELNET命令,只需按如下方式可解锁TELNET命令。
进入TELNET 命令输入模式后我们就可以直接编辑头文件来进行发送了
只需要注意:当编辑完请求头文件后要按两次回车键来发送。
这是一次标准的HTTP请求与响应,是不是跟上节的HTTP文件关联了。
当然我们不能只用这么不方便的工具,下面要介绍的是PHP里的fsockopen()方法。
先来看fsockopen()方法的原型:
<p>resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )</p>
它返回一个资源类型的结果,需要传入的参数分别是:
$hostname:主机名
$port:端口号
$errno:错误号(注意原型中的"&"一旦连接有错误,错误号将会被赋值给$errno)
$errstr:错误字符串(一旦连接有错误,错误信息将会被赋值给$errstr)
$timeout:超时时间
<span>$host</span>=<span>parse_url</span>(<span>$url</span>,PHP_URL_HOST);<span>//</span><span>获取host数据</span> <span>$port</span>=<span>parse_url</span>(<span>$url</span>,PHP_URL_PORT)==<span>null</span> ? 80 : <span>parse_url</span>(<span>$url</span>,PHP_URL_PORT);<span>//</span><span>获取端口数据,如果没有设置则默认为80</span> <span>$path</span>=<span>parse_url</span>(<span>$url</span>,PHP_URL_PATH);<span>//</span><span>获取到path信息后面使用</span> <span>$socket</span>=<span>fsockopen</span>(<span>$host</span>,<span>$port</span>,<span>$errno</span>,<span>$errstr</span>,20);//获取资源类型$socket
这个资源类型就如同Telnet里我们用telnet 主机名 端口号 命令之后的环境。
那么接下来,我们就要往这个环境里写内容了。
我们可以分次用fwrite()方法写入头信息,也可以将头信息进行拼合一次写入。
<span>fwrite</span>(<span>$socket</span>, "POST ".<span>$path</span>." HTTP/1.1\r\n"<span>); </span><span>fwrite</span>(<span>$socket</span>, "HOST: localhost\r\n\r\n");
或先拼合再写入的方式:
<span>$str</span>="POST ".<span>$path</span>." HTTP/1.1\r\n"."HOST: localhost\r\n\r\n"<span>; </span><span>fwrite</span>(<span>$socket</span>,<span>$str</span>);
注意:请求行、报头之间有一次回车键,我们用"\r\n"来进行回车输入,结束输入时两用"\r\n\r\n"模拟两次回车。
接下来我们用fread来读取响应信息并将其存入$info中:
<span>while</span> (!<span>feof</span>(<span>$socket</span>)) { <span>//</span><span>当还有待读取内容</span> <span>$info</span>.= <span>fgets</span>(<span>$socket</span>, 4096); <span>//</span><span>每次读取4096个字节内容,并用.连接符连接到$info中。</span> <span>} </span><span>echo</span> <span>$info</span>;<span>//</span><span>输出返回结果。</span>
当然以上是一个特别简单的例子,我们可以通过拼合更多的报头信息(加入Accept等)来将它更加完善。
接下来我们会说一些常用的POST方式。
如果您觉得本文对您有帮助,请您动手点一下推荐,如果有什么问题,可以在下方留言共同讨论,谢谢。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Log masuk CakePHP adalah tugas yang sangat mudah. Anda hanya perlu menggunakan satu fungsi. Anda boleh log ralat, pengecualian, aktiviti pengguna, tindakan yang diambil oleh pengguna, untuk sebarang proses latar belakang seperti cronjob. Mengelog data dalam CakePHP adalah mudah. Fungsi log() disediakan

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.
