PHP没有看到curl帖子



我写了一个非常简单的脚本来查看服务器发送的内容,如下所示:

<?php
$html1 = <<<EOT
<!doctype html>
<html lang=en>
<head>
<meta charset = 'utf-8'>
<title>TradingView Test</title>
</head>
<body>
<pre>
EOT;
$html2 = <<<EOT
</pre>
</body>
</html>
EOT;
date_default_timezone_set('America/Phoenix');
$file = date('Y/m/d h:i:sa') . "n";
$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http")
. "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$file .= "nURL: $urlnn";
$html = $file;
if (!empty($_REQUEST)) {
$r = "$_REQUEST:n" . var_export($_REQUEST, true) . "nn";
$file .= $r;
$html .= htmlspecialchars($r);
}
$headers = apache_request_headers();
if (!empty($headers)) {
$h = "HEADERS:n" . var_export($headers, true) . "nn";
$file .= $h;
$html .= htmlspecialchars($h);
}
//   if (!empty($_SERVER)) {
//     $s = "$_SERVER:n" . var_export($_SERVER, true) . "nn";
//     $file .= $s;
//     $html .= htmlspecialchars($s);
//   }
$file .= str_repeat('-', 40) . "n";
file_put_contents('./get-post.log', $file, FILE_APPEND);
# echo $html1 . $html . $html2;
?>

在服务器发送的示例中,他们有这样的示例:

#!/bin/sh
curl -H 'Content-Type: text/plain; charset=utf-8' -d '1111111111,data,more-data' -X POST https://www.testtest.com/

我想用$_REQUEST我会看到所有发送的内容,但我什么都看不到,脚本输出是什么:

2022/03/30 06:15:22pm
URL: https://www.testtest.com/
HEADERS:
array (
'X-Https' => '1',
'Connection' => 'close',
'Accept-Encoding' => 'gzip',
'Content-Type' => 'text/plain; charset=utf-8',
'Content-Length' => '45',
'User-Agent' => 'Go-http-client/1.1',
'Host' => 'www.testtest.com',
)

我怀疑问题是他们没有通过命名字段来将数据作为正确的POST发送,而且我无法更改数据的发送方式,因为它不是我的服务器。

有人知道我可以在PHP中查看什么来查看发送的数据吗?或者,这可能是Apache的问题,因为PHP通过Apache获取数据,而在这种格式下,它可能无法通过?

你会注意到,我对$_SERVER的显示进行了评论,因为即使没有,它也没有给我任何帮助。

找到了。PHP不会在没有命名参数的情况下填充$_POST,因此要按照发送字符串的方式获取字符串,需要使用以下方法:

<?php
$str = file_get_contents('php://input');

最新更新