За последние 24 часа нас посетили 52209 программистов и 1763 робота. Сейчас ищут 1027 программистов ...

Проверка заполненности поля

Тема в разделе "Прочие вопросы по PHP", создана пользователем Stairdeck, 25 авг 2015.

  1. Stairdeck

    Stairdeck Активный пользователь

    С нами с:
    9 ноя 2014
    Сообщения:
    47
    Симпатии:
    0
    Адрес:
    Россия
    Здравствуйте, есть такая проблема, что мне необходимо, чтобы поле <input type="text"> было обязательно заполнено.

    Код (PHP):
    1. echo '
    2. <form method="POST">
    3. <input type="text" value="'.$login.'" name="login">
    4. <input type="submit" name="submit">
    5. </form>';
    6. if(isset($_POST['submit']))
    7.     {                                            
    8.         if(!isset($_POST['login']))
    9.             {
    10.                 echo "Логин не может быть пуст";
    11.                 exit;
    12.             } 
    Дальше там mysql запрос идет, думаю, это не нужно.
    В общем моя проверка не проходит, он вставляет в бд тупо пустое значение, этого нельзя допустить.
    Атрибут required у <input> не предлагать, т.к. легко обходится через исходный код.

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    isset проверяет на существование, поле существует, хоть и пустое. Вам нужно empty().
     
  3. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    присмотрись к empty()
     
  4. Stairdeck

    Stairdeck Активный пользователь

    С нами с:
    9 ноя 2014
    Сообщения:
    47
    Симпатии:
    0
    Адрес:
    Россия
    Спасибо, сейчас попробую.

    Добавлено спустя 1 минуту 51 секунду:
    Огромное спасибо, все работает. Как я только раньше её не заметил :D
     
  5. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    я пробел отправлю в твоей форме и твоя форма не скажет что пароль пустой
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    рекомендую натравливать trim() на логин и пароль до валидации.
     
  7. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    а если человек хочет чтоб у него пароль содержал пробел справа или слева
    он его введёт, функция при обработке его порежет
    и пользователь потом будет безуспешно пытаться авторизоваться с пробелом в пароле
    как в таких случаях поступать ?
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не отрезать от пароля ничего, если он не длиннее ХХ символов (включая соль), которые уже не может перевать функция хеширования.
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Обломается такой человек. Но скорее всего он даже не узнает об этом, если его пароль не из одних пробелов состоит.

    Меня за*бывает когда я копирую логин или пароль откуда-то, выделив слово двойным кликом. А оказывается, что выделилось и скопировалось вместе с последующим пробелом. Есть такая фишка у текстовых полей ввода. На слишком умных сайтах это приводит к боли.

    Добавлено спустя 17 минут 4 секунды:
    Хотите прикол? Это напрямую к паролям не относится, просто про пробелы и нежданчики.

    Обратите внимание на пробелы:
    Код (PHP):
    1. INSERT INTO `test`(`name`) VALUES('qwerty ') 
    и потом
    Код (PHP):
    1. SELECT * FROM `test` WHERE `name`='qwerty' 
    Как думаете, выведется что-нибудь?
    А если проверить? Как по мне, этого достаточно, чтобы пользоваться trim.

    Добавлено спустя 24 минуты 31 секунду:
    Теперь нормальный вроде бы код, который должен выдавать запись с "1" когда логин и пароль введены верно или пусто когда неверно:
    Код (PHP):
    1. $result = $db->query(
    2.   "SELECT 1 
    3.   FROM `users` 
    4.   WHERE `login`=? AND `password`=?",
    5.   [$login, md5($password)]
    6. );
    7. if ($db->num_rows() > 0) { ... } 
    А сейчас кто-то сильно напугается — входим как админ не зная его пароля
     
  10. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Убедительно