php - $_SERVER ['REQUEST_METHOD' ] 不存在

标签 php

我刚刚安装了 WAMP,我可以访问本地主机并获取 phpinfo() 输出。

但是,虽然我可以看到 _SERVER['REQUEST_METHOD'] 设置为 GET,但我正在尝试使用以下 PHP:

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

但它会产生这个错误:

PHP Notice: Undefined index: REQUEST_METHOD in C:\ ... \test.php on line 40

使用 Komodo 在第 40 行停止并检查 $_SERVER - 数组中根本没有“REQUEST_METHOD” - 甚至没有 GET。

有人有什么想法吗?我是否必须启用 POST、REQUEST_METHOD?

为什么我可以在 phpinfo 中看到 REQUEST_METHOD=GET 而在 PHP 脚本中却看不到。

我也试过这个:

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

我生成了一些 phpinfo(在浏览器中使用 localhost/?phpinfo=1 查看)但不是全部。为什么不呢?

最佳答案

大多数 $_SERVER 指令由网络服务器设置。如果您使用的是 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');
}

关于php - $_SERVER ['REQUEST_METHOD' ] 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12754388/

相关文章:

php - mysqli or die,它一定要死吗?

php - CSS对齐来自循环帖子的网格元素

php - 从数据数组中计算和搜索字符串

php - Laravel - 删除一行(表)

php - 保护 JQuery AJAX 代码的指南?

php - 在 PHP 中查找数组的子集

php - WordPress:自定义帖子类型,将数据发送到 "register_meta_box_cb"Arg

php - 隔离对象数组中的特定列值

php - MB_CASE_*_SIMPLE 常量的用途是什么?

php - 为什么输出不显示新变量?