我刚刚安装了WAMP,我可以访问localhost并获取phpinfo()输出.
但是,虽然我可以看到_SERVER ['REQUEST_METHOD']设置为GET,但我正在尝试使用以下PHP:
if ($_SERVER["REQUEST_METHOD"]=="POST") {
...
Run Code Online (Sandbox Code Playgroud)
但它会产生这个错误:
PHP注意:未定义的索引:第40行的C:\ ...\test.php中的REQUEST_METHOD
使用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();
?>
Run Code Online (Sandbox Code Playgroud)
我生成一些phpinfo(在浏览器中使用localhost /?phpinfo = 1查看)但不是全部.为什么不?
大多数$ _SERVER指令由Web服务器设置.如果您使用的是WAMP,那将是Apache.您可以检查apache配置以找出未设置此值的原因.
在尝试使用它们之前测试值的存在会更好.
$value = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : null;
Run Code Online (Sandbox Code Playgroud)
你甚至可以使用getenv()方法来缩短它.
$value = getenv('REQUEST_METHOD');
Run Code Online (Sandbox Code Playgroud)
也没有必要这样做
<?php
ob_start();
phpinfo();
$info = ob_get_contents();
ob_end_clean();
?>
Run Code Online (Sandbox Code Playgroud)
这是您在空白PHP文件中所需的全部内容.
<?php phpinfo();
Run Code Online (Sandbox Code Playgroud)
我会像这样写你的例子:
$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');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9626 次 |
| 最近记录: |