二、HTTP:如何用telnet提交表单
提交一个表单有两种方法:
- GET
- POST
第一种方法提交的表单会显式地添加在URL后,以参数形式呈现;
第二种方法则会在HTTP报文中传送,可以允许很大的长度,而且保密性好。
提交第一个表单
这个表单将使用GET方法,这主要是由于以下PHP脚本文件中的全局变量$_GET决定的。
File: get.php
[php]
<?php
$string = $_GET["text"];
if ($string == "")
echo "No submission";
else
echo "You submitted $string";
?>
[/php]
功能解析:如果没有提交任何东西,它会返回No submission,否则返回提交的字符串。
telnet test 80 Trying 127.0.0.1... Connected to test. Escape character is '^]'. GET /get.php HTTP/1.1 Host: test HTTP/1.1 200 OK Date: Fri, 18 Feb 2011 11:46:17 GMT Server: Apache/2.2.14 (Ubuntu) X-Powered-By: PHP/5.3.2-1ubuntu4.7 Vary: Accept-Encoding Content-Length: 13 Content-Type: text/html No submission Connection closed by foreign host.
现在我们加上那个text参数上去:
telnet test 80 Trying 127.0.0.1... Connected to test. Escape character is '^]'. GET /get.php?text=hello HTTP/1.1 Host:test HTTP/1.1 200 OK Date: Fri, 18 Feb 2011 11:57:17 GMT Server: Apache/2.2.14 (Ubuntu) X-Powered-By: PHP/5.3.2-1ubuntu4.7 Vary: Accept-Encoding Content-Length: 19 Content-Type: text/html You submitted hello
POST方法提交表单
File:post.php
[php]
<?php
$string = $_POST["text"];
if ($string == "")
echo "No submission";
else
echo "You submitted $string";
?>
[/php]
我们直接提交一些东西,不过报文有所不同:
telnet test 80 Trying 127.0.0.1... Connected to test. Escape character is '^]'. POST /post.php HTTP/1.1 Host: test Referer: test/ Content-type: application/x-www-form-urlencoded Content-length: 10 Connection: Close text=hello HTTP/1.1 200 OK Date: Fri, 18 Feb 2011 12:09:01 GMT Server: Apache/2.2.14 (Ubuntu) X-Powered-By: PHP/5.3.2-1ubuntu4.7 Vary: Accept-Encoding Content-Length: 19 Connection: close Content-Type: text/html You submitted hello
请注意红色部分为要提交的正文,必须与报文头空一行。
它的长度决定Content-lenth
。它的内容由Content-type
决定。
此处Content-type
为application/x-www-form-urlencoded,表示要处理的是一个表单的数据。
第一行POST /post.php
指出了表单将交给post.php脚本进行处理。
此处也可以是任何CGI脚本,如/cgi-bin/do.pl
读者如果有任何与此主题相关的问题或者建议,欢迎留言提出!
版权声明
本文出自 Lesca 技术宅,转载时请注明出处及相应链接。
本文永久链接: https://www.lesca.cn/archives/submit-http-form-with-telnet.html