$ _ SERVER [“REQUEST_METHOD”]不存在($_SERVER['REQ

2019-08-01 05:11发布

我刚刚安装WAMP和我可以访问本地主机,并获得phpinfo()函数的输出。

然而,尽管我可以看到_SERVER [“REQUEST_METHOD”]设置为GET,我尝试使用下面的PHP:

if ($_SERVER["REQUEST_METHOD"]=="POST") {
  ...

但它会产生这个错误:

PHP公告:未定义指数:REQUEST_METHOD在C:\ ... \ test.php的第40行

使用科莫多停在40行,检查$ _ SERVER - 它没有数组中的“REQUEST_METHOD”的话 - 连得。

有人有主意吗? 我一定要启用POST,REQUEST_METHOD?

为什么我可以看到REQUEST_METHOD = GET中的phpinfo,但不是在PHP脚本。

我也试过这样:

<?php
ob_start();
phpinfo();
$info = ob_get_contents();
ob_end_clean();
?>

I(使用本地主机/?的phpinfo如在浏览器中查看= 1)产生了一些的phpinfo的但不是全部。 为什么不?

Answer 1:

多数$ _ SERVER指令由Web服务器设置。 如果您正在使用WAMP这将是Apache的。 你可以检查你的Apache配置,找出为什么这个值未设置。

这是更好尝试使用它们之前测试的存在价值。

$value = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : null;

你甚至可以使用的getenv()方法来缩短这个。

$value = getenv('REQUEST_METHOD');

也没有必要做

<?php
ob_start();
phpinfo();
$info = ob_get_contents();
ob_end_clean();
?>

这是你在一个空白的PHP文件需要。

<?php phpinfo();

我会写你的例子是这样的:

$request_method = strtoupper(getenv('REQUEST_METHOD'));
$http_methods = array('GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS');

if( ! in_array($request_method, $http_methods)
{
    die('invalid request');
}


文章来源: $_SERVER['REQUEST_METHOD'] does not exist
标签: php phpinfo