Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проверка на заполнение полей
Форумы портала PHP.SU » » Если скрипт не работает » Проверка на заполнение полей

Страниц (1): [1]
 

1. etoYA - 26 Октября, 2011 - 10:40:19 - перейти к сообщению
Пробовал и empty и $login = '' и не работает, сразу отображает

PHP:
скопировать код в буфер обмена
  1. echo 'Не правильный логин или пароль';


Ну или

PHP:
скопировать код в буфер обмена
  1. if (mysql_num_rows($sql) == 1) {
  2.     $row = mysql_fetch_assoc($sql);
  3.     echo $row['login'];
  4. }


PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['submit'])) {
  2.  
  3. // Проверка на заполнение полей
  4.  
  5. if (!isset($login)) {
  6.         echo 'Не заполнено поле логин';
  7. }
  8. elseif (!isset($password)) {
  9.         echo 'Не заполнено поле пароль';
  10. }
  11.  
  12. // Сверяем логин и пароль
  13.  
  14. $query = "SELECT * FROM users WHERE login='{$login}' AND password='{$password}' LIMIT 1";
  15. $sql = mysql_query($query) or die(mysql_error());
  16.  
  17.  
  18. if (mysql_num_rows($sql) == 1) {
  19.     $row = mysql_fetch_assoc($sql);
  20.     echo $row['login'];
  21. }
  22. else {
  23.                 echo 'Не правильный логин или пароль';
  24. }
  25. }
2. EuGen - 26 Октября, 2011 - 10:50:31 - перейти к сообщению
Подозреваю, что у Вас register_globals=Off (что правильно).
0. Объявляйте явно:
PHP:
скопировать код в буфер обмена
  1. $login=$_POST['login'];
  2. $password=$_POST['password'];

1. Используйте экранирование (в Вашем случае это mysql_real_escape_string)
2. Проверяйте что же приходит (когда подразумевается, что должен сработать вывод ошибки о незаполненном поле) - var_dump
3. etoYA - 26 Октября, 2011 - 10:50:40 - перейти к сообщению
Блин, зачем перенесли то, скрипт ведь работает, но у меня вопрос: почему не отображает сообщение об незаполненом поле?
(Добавление)
Это есть

PHP:
скопировать код в буфер обмена
  1.  
  2. $login = mysql_real_escape_string($_POST['login']);
  3. $password = md5($_POST['password']);
4. EuGen - 26 Октября, 2011 - 10:54:14 - перейти к сообщению
Если Вы ранее применяете md5 к $_POST['password'] то проверка isset($password) не имеет смысла - ведь md5 от пустой строки все так же вернет 32-символьный хеш.
5. etoYA - 26 Октября, 2011 - 11:06:50 - перейти к сообщению
Хм.. Спасибо, попробую
6. Мелкий - 26 Октября, 2011 - 11:25:05 - перейти к сообщению
Аналогично себя ведёт и mysql_real_escape_string к NULL - возвращает пустую строку, а не NULL. Что, по спецификации isset, является true.
7. etoYA - 26 Октября, 2011 - 11:27:47 - перейти к сообщению
Спасибо, все работает

 

Powered by ExBB FM 1.0 RC1