我知道这个问题已经在论坛上问过好几次了,但是没有一个答案适合我。每次我尝试通过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"
)。
有人愿意帮忙吗?谢谢!
您在找$_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'));
这在php中描述://input
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
读取任何内容。
要读取作为URL参数传递的表单输入,可以使用全局$_GET
变量。
当您使用POST请求时,您通常使用全局$_POST
数组,而不是通过php://input
手动读取请求正文。
你也可以考虑$_REQUEST
,如果你不关心它是POST还是GET请求。不过,请注意使用$_REQUEST[]有什么问题?