2

WAMP をインストールしたところ、localhost にアクセスして phpinfo() の出力を取得できます。

ただし、_SERVER['REQUEST_METHOD'] が GET に設定されていることがわかりますが、次の PHP を使用しようとしています。

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

しかし、それはこのエラーを生成します:

PHP Notice: 未定義のインデックス: REQUEST_METHOD in C:\ ... \test.php 行 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 を使用してブラウザーで表示) を生成しますが、すべてではありません。なぜだめですか?

4

2 に答える 2

6

ほとんどの $_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');
}
于 2012-10-05T21:43:58.540 に答える