Home  >  Article  >  Backend Development  >  PHP fsockopen submits POST data explanation_PHP tutorial

PHP fsockopen submits POST data explanation_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 17:42:43828browse

Compare the differences between form [url=javascript:;]POST[/url] and fsockopen submission methods.

In the case of form POST submission,
$_POST and [url=javascript:;]php[/url]://input can get the value, $HTTP_RAW_POST_DATA is empty
$_POST to associate Organize the submitted data in an array and perform encoding processing, such as urldecode, or even encoding conversion.
php://input can obtain unprocessed POST raw data through file reading through the input stream

php://input allows reading POST raw data. It puts less pressure on memory than $HTTP_RAW_POST_DATA and does not require any special php.ini settings. php://input cannot be used with enctype="multipart/form-data".

fsockopen submits POST data
Example:
$sock = fsockopen("localhost", 80, $errno, $errstr, 30);
if (!$sock) die(" $errstr ($errno) ");
$data = "txt=" . urlencode("中") . "&bar=" . urlencode("Value for Bar");
fwrite($sock, " POST /posttest/resp****e.php HTTP/1.0 ");
fwrite($sock, "Host: localhost ");
fwrite($sock, "Content-type: application/x- www-form-urlencoded ");
fwrite($sock, "Content-length: " . strlen($data) . " ");
fwrite($sock, "Accept: */* ");
fwrite($sock, " ");
fwrite($sock, "$data ");
fwrite($sock, " ");
$headers = "";
while ($str = trim(fgets($sock, 4096)))
$headers .= "$str ";
echo " ";
$body = "";
while (! feof($sock))
$body .= fgets($sock, 4096);
fclose($sock);
echo $body;
The result is consistent with (1)

Conclusion:
1. Use php://input to easily get the original POST data

2. $HTTP_RAW_POST_DATA is only valid when the Content-Type type of POST is not recognized by PHP
For example, POST data usually submitted through page forms cannot be extracted through $HTTP_RAW_POST_DATA. Its encoding type attribute (enctype attribute) is application/x-www-form-urlencoded, multipart/form-data.
Note: Even if you explicitly change the enctype attribute in the page to a type that is not recognized by PHP, it will still be invalid.
Since the form submission encoding attribute is form-limited, unrecognizable types will be considered to be submitted in the default encoding (i.e. application/x-www-form-urlencoded)

3. $_POST only works when the data is Application/x-www-form-urlencoded type can only be obtained when submitting.
Add -.shtml and the search will consider it as a static page.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/486056.htmlTechArticleCompare the differences between form [url=javascript:;]POST[/url] and fsockopen submission. When the form is submitted in POST mode, $_POST and [url=javascript:;]php[/url]://input can get the value,...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn