Я только что установил WAMP, и я могу получить доступ к localhost и получить выход phpinfo ().
Однако, хотя я вижу, что _SERVER ['REQUEST_METHOD'] установлен в GET, я пытаюсь использовать следующий PHP:
if ($_SERVER["REQUEST_METHOD"]=="POST") { ...
но он вызывает эту ошибку:
Примечание PHP: Неопределенный индекс: REQUEST_METHOD в C: \ … \ test.php в строке 40
Используя Komodo, чтобы остановить на строке 40 и проверить $ _SERVER – он вообще не имеет «REQUEST_METHOD» в массиве – даже GET.
У кого-нибудь есть идеи? Должен ли я включать POST, REQUEST_METHOD?
Почему я вижу REQUEST_METHOD = GET в phpinfo, но не в скрипте 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'); }