Примечание: неопределенный индекс: XXX - это действительно имеет значение? - PullRequest
4 голосов
/ 07 января 2010

Поскольку я изменил свой уровень сообщений об ошибках на error_reporting(E_ALL | E_STRICT);, я столкнулся с этой ошибкой. Я могу избежать этой ошибки, используя isset(), но код выглядит так ужасно!


Итак, мой вопрос: что если я вернусь к своим обычным настройкам отчетов об ошибках? действительно ли важно знать, что что-то еще не определено? потому что он работает без ошибок Notice Notice.

Потому что у меня есть +10 входов, и я получаю их так:

$username = $_POST['username'];

Я также попытался предварительно определить переменные, используя это в верхней части файла.

$username = null; и $username = 0; но они не работают.

Спасибо.

Ответы [ 6 ]

10 голосов
/ 07 января 2010

Это имеет значение . Ошибки замедляют работу PHP, и вы действительно должны разработать свое приложение, чтобы не создавать ошибок. Многие другие языки полностью умрут в ситуациях, когда PHP с радостью продолжит выполнение скрипта.

При разработке ваш скрипт не должен выдавать никаких ошибок (даже E_NOTICE).

7 голосов
/ 07 января 2010

Я бы предложил создать простую функцию для захвата значений $ _POST и проверки для вас.

, например

<?php
function getPost($key)
{
    return isset($_POST[$key]) ? $_POST[$key] : null;
}

Edit:

Очевидно, что ОП не было ясно, как использовать это:

$username = getPost('username');
2 голосов
/ 07 января 2010

Это имеет значение - когда я получаю странное поведение в приложении php, журнал ошибок - это первое место, куда я смотрю, и в девяти случаях из десяти сообщение «НЕ УКАЗАННЫЙ ИНДЕКС» приводит меня прямо к основной причине.

2 голосов
/ 07 января 2010

Это означает, что в массиве POST нет ключа 'username'.

Обычно рекомендуется проверять и исправлять эти вещи, поскольку они могут распространяться на другие части вашего приложения, которые зависят от отсутствующего значения.

1 голос
/ 07 января 2010

Все ошибки должны быть устранены, независимо от уровня, для мобильности.

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

Лучше всего проверить наличие $ _POST ['username'] и затем действовать независимо от этого возвращаемого значения. Используя isset (), вы возвращаете значение true или false.

Я предполагаю, что $ _POST ['username'] для использования в системе аутентификации какого-либо описания? Поэтому, если ваша функция isset () возвращает false, вы можете отобразить ошибку, указав пользователю, что имя пользователя требуется.

1 голос
/ 07 января 2010

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

ИсторическиPHP был спроектирован с предельной простотой (в старых версиях у вас было бы просто $ username с нулевыми строками кода), но этот подход оказался крайне неадекватным по мере развития сети: он приводил только к тому, что код был небезопасным и трудным для понимания.поддерживать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...