我知道这个问题已在论坛上多次提出,但任何答案都没有对我有用。每当我尝试通过URL参数发送数据时,我仍然会得到空字符串。
这是PHP代码
<?php
if (!file_get_contents("data:,ok")) {
die("Houston, we have a stream wrapper problem.");
}
print "CONTENT_TYPE: " . $_SERVER['CONTENT_TYPE'] . "<BR />";
$data = file_get_contents('php://input');
print "DATA: <pre>";
var_dump($data);
$tempArray = json_decode(file_get_contents('generated.json'), true);
array_push($tempArray, $data);
$jsonData = json_encode($tempArray);
file_put_contents('generated.json', $jsonData);
print "</pre>";
?>
<form method="post">
<input type="text" name="name" value="ok" />
<input type="submit" name="submit" value="submit"/>
</form>
使用url参数传递变量的示例
http://localhost/tests/testtest.php?name=what
输出:
Notice: Undefined index: CONTENT_TYPE in C:\Apache24\htdocs\tests\testtest.php on line 5
CONTENT_TYPE:
DATA:
我已设置allow_url_fopen = On
,设置post_max_size = 8M
但仍然没有希望。但是,当我尝试通过单击提交按钮发送数据时,它会将原始数据发送到php(string(21) "name=ok&submit=submit"
)。
有人愿意帮忙吗?谢谢!
答案 0 :(得分:2)
<强> PHP://输入强>
php:// input是一个只读流,允许您从请求正文中读取原始数据。在POST请求的情况下,最好使用php:// input而不是$ HTTP_RAW_POST_DATA,因为它不依赖于特殊的php.ini指令。
重要的部分是“POST
reqest”。
这意味着,当您说http://www.example.com/tests/testtest.php?name=what
时,您发送了GET
个请求,而不是POST
个请求。因此,没有请求正文,您无法通过php://input
读取任何内容。
要阅读作为网址参数传递的表单输入,您可以使用全局$_GET
变量。
当您使用POST请求时,通常使用全局$_POST
数组,而不是通过php://input
手动阅读请求正文。
如果您不关心它是POST还是GET请求,您也可以考虑$_REQUEST
。但是,请注意What's wrong with using $_REQUEST[]?
答案 1 :(得分:2)
您在寻找$_SERVER['QUERY_STRING']
吗?
<?php
// Basic way, but has the risk of E_NOTICE when it is undefined.
var_dump($_SERVER['QUERY_STRING']);
// Safe way
var_dump((string)filter_input(INPUT_SERVER, 'QUERY_STRING'));