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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка ввода данных

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: с помощью функции preg_match
MadDen
Отправлено: 17 Января, 2010 - 18:52:25
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Авг. 2007  
Откуда: Аглы


Помог: -3 раз(а)




Добрый день, продолжил изучение великого языка php и возник вопрос)
имеется код:
PHP:
скопировать код в буфер обмена
  1. $msg = $_POST['msg'];
  2. $login = $_POST['login'];
  3.  
  4. if ( empty($_POST['ok']) )
  5. {
  6. echo "<div class='droppedblock'>
  7. Думай, прежде чем написать.
  8. </div>";
  9.  
  10. echo "
  11. <div class='header'>
  12. <form name='write' action='write.php' method='post'>
  13. <b> Имя: </b> <br/ > <input name='login' type='text'><br/ >
  14. <b> Сообщение: </b> <br/ > <input name='msg' type='text'>
  15. <br/ >
  16. <input type='submit' name='ok' value='Добавить'>
  17. </form>
  18. </div>";
  19. }
  20. else
  21. {
  22. if(!empty($_POST['login']) && !empty($_POST['msg']))
  23. {
  24. // заносим в базу
  25. mysql_query("INSERT into `mess`
  26. (`msg`,`login`)
  27. values ('$msg','$login')");
  28.  
  29. //header( 'Refresh: 1; url=write.php' );
  30. echo "<div class='droppedblock'>
  31. Сообщение успешно добавленно
  32. <br/ >
  33. <a href='write.php'>Добавить ещё</a><br/>
  34. </div>";
  35. }
  36. else
  37. {
  38. echo "<div class='droppedblock'>
  39. Вы ни чего не ввели!
  40. <br/ >
  41. <a href='write.php'>Попробовать ещё?!</a><br/>
  42. </div>";
  43. }
  44. }

собственно вопрос.
нужно обработать введенную информацию в переменные login и msg
пробовал вот так:
PHP:
скопировать код в буфер обмена
  1. if(!empty($_POST['login']) && !empty($_POST['msg']))
  2. {
  3.     if(!preg_match("%^[a-z0-9]{2,15}$%i", $_POST['login']))
  4.     {
  5.         header('Refresh: 1; url=write.php');    
  6.         echo '<div class="header">';    
  7.         echo 'Неправильный логин!';    
  8.         echo '</div>';  
  9.     }
  10.  
  11.     if (!preg_match("%^[a-zA-Z0-9\.\,\!\?\-\+\=]{2,250}$%i", $_POST['msg']))
  12.     {    
  13.         header('Refresh: 1; url=write.php');    
  14.         echo '<div class="header">';    
  15.         echo 'Текст содержит недопустимые символы!';    
  16.         echo '</div>';  
  17.     }
  18. }


и так:

PHP:
скопировать код в буфер обмена
  1. If (!empty($_POST['login']))
  2. If (!preg_match("%^[a-z0-9]{3,15}$%",$_POST['login']))
  3. {
  4. echo '<div class="quote_conteiner">';
  5. echo 'Неправильный логин!';
  6. echo '</div>';
  7. }
  8. else $login = $_POST['login'];
  9.  
  10. If (!empty($_POST['pass']))
  11. If (!preg_match("%^[a-z0-9]{3,10}$%",$_POST['pass']))
  12. {
  13. echo '<div class="quote_conteiner">';
  14. echo 'Неправильный текст!';
  15. echo '</div>';
  16. }
  17. else $msg = $_POST['msg'];


В верхнем коде то я разбираюсь, и в переменных, и в конструкции if else, но ни как не могу понять куда мне вписать проверку данных и каким способом лучше её внедрить в код, пробовал вставлять в конструкцию if else ошибок уйма, не могу понять логику..
по идеи когда данные занеслись в переменные их должны проверить а потом отправить дальше или сказать что недопустимые символы или записать в базу вот собственно в чем и вопрос)
и как то странно я намутил с проверкой думаю можно обойтись проще)
если возможно, посоветуйте как и куда вставить в код
p.s. За ранее спасибо что потратили своё драгоценное время на моё обучение)


-----
Лучший способ убедиться, что меры предосторожности не понадобятся, это своевременно принять их.
 
 Top
JustUserR
Отправлено: 17 Января, 2010 - 19:34:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




MadDen Вообще первый вариант отличается от второго только перестановкой порядка условий - то проверяется заполенность полей а потом регуляркой проходится а то наоборот но это не так важно
Другое дело если вы используете отдельный PHP-скрипт для авторизации и отдельный для написания сообщений то необходимо передавать логин в заголовке Header() когда вы делаете переадресацию
Если это имееся в виду в рамках одного PHP-скрипта то вставьте указанный код просто в начала самого первого листинга


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
MadDen
Отправлено: 17 Января, 2010 - 19:36:15
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Авг. 2007  
Откуда: Аглы


Помог: -3 раз(а)




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


-----
Лучший способ убедиться, что меры предосторожности не понадобятся, это своевременно принять их.
 
 Top
JustUserR
Отправлено: 17 Января, 2010 - 20:32:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




MadDen Можете взять следующий код - недостаток заключается в том что после написания сообщенияне происходит перехода к его просмотру а идет переход опять на написание - но у вас так и было
Спойлер (Отобразить)


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
MadDen
Отправлено: 18 Января, 2010 - 07:56:16
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Авг. 2007  
Откуда: Аглы


Помог: -3 раз(а)




Проблема решена, спасибо, разобрался с exit; Хотя и знал что прерывает код дальше, но чет даже забыл про неё, буду изучать на практике) дальше


-----
Лучший способ убедиться, что меры предосторожности не понадобятся, это своевременно принять их.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB