|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
虽说不上很好,但至少一般的数据操作,再在原有的SQL语言的基础上,用得还是可以的。 <p>在利用xml-rpc的时分,server端获得client数据,次要是经由过程php输出流input,而不是$_POST数组。所以,这里次要切磋php输出流php://input
对一php://input引见,PHP官方手册文档有一段话对它停止了很明白地概述。
“php://input allows you to read raw POST data. It is a less memory intensive alternative to $HTTP_RAW_POST_DATA and does not need any special php.ini directives. php://input is not available with enctype=”multipart/form-data”.
翻译过去,是如许:
“php://input可以读取没有处置过的POST数据。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,而且不需求特别的php.ini设置。php://input不克不及用于enctype=multipart/form-data”
咱们应当怎样去了解这段概述呢?!我把它划分为三局部,慢慢去了解。
1. 读取POST数据
2. 不克不及用于multipart/form-data类型
3. php://input VS $HTTP_RAW_POST_DATA
读取POST数据
PHPer们必定很熟习$_POST这个内置变量。$_POST与php://input存在哪些联系关系与区分呢?别的,客户端向办事端交互数据,最经常使用的办法除POST以外,还有GET。既然php://input作为PHP输出流,它能读取GET数据吗?这二个成绩恰是咱们这节需求切磋的次要内容。
经历告知咱们,从测试与察看中总结,会是一个很凑效的办法。这里,我写了几个剧本来匡助咱们测试。
@file 192.168.0.6:/phpinput_server.php 打印出吸收到的数据
@file 192.168.0.8:/phpinput_post.php 摹拟以POST办法提交表双数据
@file 192.168.0.8:/phpinput_xmlrpc.php 摹拟以POST办法收回xmlrpc恳求.
@file 192.168.0.8:/phpinput_get.php 摹拟以GET办法提交表单表数
phpinput_server.php与phpinput_post.php
<?php
//@file phpinput_server.php
$raw_post_data = file_get_contents('php://input', 'r');
echo "-------\$_POST------------------\n";
echo var_dump($_POST) . "\n";
echo "-------php://input-------------\n";
echo $raw_post_data . "\n";
?>
<?php
//@file phpinput_post.php
$http_entity_body = 'n=' . urldecode('perfgeeks') . '&p=' . urldecode('7788');
$http_entity_type = 'application/x-www-form-urlencoded';
$http_entity_length = strlen($http_entity_body);
$host = '192.168.0.6';
$port = 80;
$path = '/phpinput_server.php';
$fp = fsockopen($host, $port, $error_no, $error_desc, 30);
if ($fp) {
fputs($fp, "POST {$path} HTTP/1.1\r\n");
fputs($fp, "Host: {$host}\r\n");
fputs($fp, "Content-Type: {$http_entity_type}\r\n");
fputs($fp, "Content-Length: {$http_entity_length}\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $http_entity_body . "\r\n\r\n");
while (!feof($fp)) {
$d .= fgets($fp, 4096);
}
fclose($fp);
echo $d;
}
?>
咱们可以经由过程利用东西ngrep抓取http恳求包(由于咱们需求探知的是php://input,所以咱们这里只抓取http Request数据包)。咱们来履行测试剧本phpinput_post.php聪明的你,显然已经逐渐的开悟了,慢慢的理解了编程的概念,那么祝贺你,你已经迈出了成功的第一步。 |
|