Страницы

Поиск по вопросам

среда, 27 ноября 2019 г.

PHP проверка форм


Стандартное вступление:
Только начинаю изучать php, не ругайтесь за глупый вопрос и т.д.
Код из книги Робина Никсона.

    
        Test
    
    
    Вас зовут $name
Как вас зовут?
_END ?> Вопрос: Во второй строке с помощью isset() проверяем установлена переменная или нет. В третьей у нас условие: если не установлена, то выводим "(Не введено)". Вот что не пойму: открываю страницу - выводит: Вас зовут (Не введено) Как вас зовут? (и форма для отправки) Ничего не ввожу, нажимаю "отправить" - выводит: Вас зовут Как вас зовут? (и НЕ выводит "не введено") (и форма для отправки) То есть, я ничего не ввожу, но функция, считает, что переменная была установлена значением отличным от NULL. Почему? Если она пропускает пустое значение, то зачем ее использовать? Почему не использовать empty? Но во всех программах вижу именно такую проверку. Чего я не понимаю?


Ответы

Ответ 1



Да, после сабмита $_POST['name'] получил право на существование (isset). Ведь пустая строка - тоже значение. А если есть значение, то есть и переменная. Но вы верно подметили почему бы не взять empty? А разница в том, что empty проверяет на пустоту значения существующей переменной. Поэтому тут оптимальным будет двойное условие: if (isset($_POST['name']) && !empty($_POST['name']))

Ответ 2



Может мой ответ покажется глупым, но: У меня лично есть привычка ещё с университета - обрамлять операторы, выполняющиеся в конструкции "if-then-else" в блоки. В данном случае, "{" и "}". При изучении PHP4, у меня возникала иногда проблема с переменными, которая решалась настройками файлов конфигурации: php.ini или httpd.conf. Думаю, в п.2 больше вероятности решения проблемы. Удачи! P.S.: Оператор "@" ещё никто не отменял. Насколько я помню, он нужен для того, чтобы предотвратить ошибки при первичной инициализации переменной. Как-то так.

Ответ 3



if( strlen($_POST['name'])>2 ){ //если длина $_POST['name'] больше 2 выполняется тут }

Ответ 4



Есть же документация. Таблица сравнения типов в PHP

Ответ 5



// переменные которые ждёте: $name = "(не введено)"; $age = "(не указано)"; // получаем из пост foreach ($_POST as $key => $value) { $clear_val = trim ($value); // тут может быть: html_spec_char, sql_spec_char итд if (!empty($clear_val)) { $$key = $clear_val; } } print "Имя: $name, возраст $age.";

Комментариев нет:

Отправить комментарий