php ошибки в WAMP2 - PullRequest
       6

php ошибки в WAMP2

1 голос
/ 10 апреля 2011

У меня есть полноценный скрипт php для активации пользователя, который я написал. Полностью работает в том смысле, что на моем реальном веб-хостинге он не отображает ошибок, хотя, когда я работаю в WAMP2, я получаю такие ошибки.

Notice: Undefined index: type in C:\wamp\www\activate.php on line 4
Notice: Undefined index: username in C:\wamp\www\activate.php on line 5
Notice: Undefined index: gender in C:\wamp\www\activate.php on line 6
Notice: Undefined index: formvalue in C:\wamp\www\activate.php on line 29

Я знаю, в чем проблема, потому что страница activ.php предназначена для отправки формы из create.php (форма в create.php имеет скрытое значение 1, и если она существует, то форма отправляется в mysql db) и если значение формы отсутствует, то пользователь активирует свою учетную запись.

Когда пользователь активирует, переменные, которые я определил, используя $ _POST и скрытое значение формы 1, не определены, что вызывает ошибки.

Мой вопрос: почему эти ошибки не отображаются, когда мои страницы загружаются на мой фактический хостинг, но присутствуют в WAMP2? И имеют ли значение эти ошибки, плохая практика иметь неопределенные переменные? И если да, то как мне преодолеть проблему?

Спасибо и надеюсь, я объяснил, что все в порядке.

Ответы [ 4 ]

1 голос
/ 10 апреля 2011

Ваш PHP настроен на отображение уведомлений, предупреждений и т. Д. В конфигурации WAMP2.

В среде хостинга это отключено и, вероятно, будет отображать только критические ошибки.

Вы можете найтиПодробнее об отчётах об ошибках: http://forums.devshed.com/php-development-5/changing-error-reporting-in-php-ini-549798.html

Если вы не знаете, где находится ваш файл php.ini, попробуйте создать файл php со следующим кодом для отображения текущей конфигурации:

<?php
   phpinfo();
?>
1 голос
/ 10 апреля 2011

плохая практика - иметь неопределенное переменные?

Да


как мне преодолеть проблему?

Не используя переменные, которые не существуют.

Или с помощью переменных, которые были инициализированы значением по умолчанию, если ожидаемое значение не было предоставлено.

Например:

if (isset($_POST['login'])) {
    $login = $_POST['login'];
} else {
    $login = '';
}

Или, используя троичный оператор, получить что-то более короткое:

$login = isset($_POST['login']) ? $_POST['login'] : '';


почему эти ошибки не отображаются когда мои страницы загружаются на моем фактическом хостинг но есть в WAMP2?

Если это возможно, потому что отображаются на одном сервере, а не на другом - см. display_errors.

Или это может быть потому, что уровень error_reporting не одинаков на двух серверах.

Как правило, ваш сервер разработки настроен для отправки уведомлений (см. E_NOTICE) и для отображения ошибок - что облегчает работу, когда он приходит к поиску причины некоторых проблем.

0 голосов
/ 10 апреля 2011

Скорее всего, для вашего хоста error_reporting установлено значение, в котором E_NOTICE не отображаются (E_ALL ^ ​​E_NOTICE). Я всегда проверяю наличие моих переменных, поэтому не выдаются уведомления о неопределенных переменных / индексах. Это помогает мне в отладке, в которой я всегда включаю E_NOTICE (error_reporting = E_ALL).

Возможно, вы захотите использовать методы filter_* для получения значений POST или GET, поскольку он также проверяет, является ли переданное значение строкой или нет.

0 голосов
/ 10 апреля 2011

http://php.net/manual/en/errorfunc.configuration.php - display_errors и display_startup_errorsТакже то, что я хочу сказать - рекомендуется проверять, существует ли ключ массива:

$login = isset($_POST['login']) ? $_POST['login'] : NULL;
...