Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Защита от спама
 
 автор: Stifter2   (25.04.2009 в 12:12)   письмо автору
 
 

Здравствуйте,

Хочу сделать проверку содержания переменной, переданной через POST на наличие определенных фраз, как такое можно реализовать? Через какую функцию?


<?
if(...$message...содержитнапримерфразу "<a href"...) { $error.="Это спам"; }
?>


Заранее очень благодарен. Каптча не спасает что-то.

  Ответить  
 
 автор: nikita2206   (25.04.2009 в 12:42)   письмо автору
 
   для: Stifter2   (25.04.2009 в 12:12)
 

с помощью регулярных выражений preg_match

  Ответить  
 
 автор: Trianon   (25.04.2009 в 13:04)   письмо автору
 
   для: nikita2206   (25.04.2009 в 12:42)
 

регулярные выражения здесь не требуются.
достаточно strpos()

  Ответить  
 
 автор: nikita2206   (25.04.2009 в 13:35)   письмо автору
 
   для: Trianon   (25.04.2009 в 13:04)
 

stripos()

  Ответить  
 
 автор: Stifter2   (25.04.2009 в 13:49)   письмо автору
 
   для: Trianon   (25.04.2009 в 13:04)
 

Так strpos() только позицию вернет же? или нет?

  Ответить  
 
 автор: nikita2206   (25.04.2009 в 13:56)   письмо автору
 
   для: Stifter2   (25.04.2009 в 13:49)
 

он возращает позицию, а его тип говорит о том, нашел ли он вообще чтолибо...
тоесть if(stripos($message, 'http://') === TRUE) exit('SPAM'); // если "тождественно" равно то это спам....

http://www.php.su/learnphp/operators/?compar

  Ответить  
 
 автор: Stifter2   (25.04.2009 в 13:57)   письмо автору
 
   для: nikita2206   (25.04.2009 в 13:56)
 

Ага, понял, только сделал и пост прочитал ваш. Всё равно спасибо!

  Ответить  
 
 автор: Trianon   (25.04.2009 в 14:18)   письмо автору
 
   для: nikita2206   (25.04.2009 в 13:56)
 

и часто у Вас stripos() возвращает результат, тождественно равный true?

  Ответить  
 
 автор: nikita2206   (25.04.2009 в 14:27)   письмо автору
 
   для: Trianon   (25.04.2009 в 14:18)
 

=== называют тождественным равенством... если честно я сам незнаю что значит тождественно...

  Ответить  
 
 автор: Лерк   (25.04.2009 в 14:33)   письмо автору
 
   для: nikita2206   (25.04.2009 в 14:27)
 

Почитайте в мануале.

stripos() true не возвращает, поэтому код работать правильно не будет.

  Ответить  
 
 автор: Trianon   (25.04.2009 в 14:36)   письмо автору
 
   для: nikita2206   (25.04.2009 в 14:27)
 

=== false
означает что функция возвращает именно false именно типа bool.
Не 0, 0.0, не "", не null и не array() , хотя все эти значения равны после приведения типов.
А именно false

И в данном контексте это оправданно.
Потому что если функция вернула 0 - это значит, что она обнаружила появление искомой подстроки в самом начале - на позиции 0.
Если функция вернула false - значит, что подстрока не нашлась вообще.

А Вы написали чушь. Потому что true эта функция не возвращает никогда.

  Ответить  
 
 автор: Stifter2   (25.04.2009 в 13:56)   письмо автору
 
   для: Trianon   (25.04.2009 в 13:04)
 

Вот что-то вроде этого сделать?


<?
$stri 
0;
$stri strpos("$message""<a href");
if(
$stri != 0) { $error.="Это спам"; }
?>

  Ответить  
 
 автор: nikita2206   (25.04.2009 в 13:57)   письмо автору
 
   для: Stifter2   (25.04.2009 в 13:56)
 

<a onclick="" href="jkhkj">lkjlk</a>
это не спам

  Ответить  
 
 автор: Stifter2   (25.04.2009 в 14:31)   письмо автору
 
   для: nikita2206   (25.04.2009 в 13:57)
 

Ну тогда можно поставить </a> или href

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования