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

Форум PHP

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

 

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

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

тема: Защита от спама.
 
 автор: relikt   (28.02.2008 в 15:03)   письмо автору
 
 

Здравствуйте,
Подскажите, что в этом коде не правильно.


<?php
$filenname 
"spamlist.php";
$bu file_get_contents($filenname);

if (
preg_match($contacts$bu)) {
        
$action "";  
        
$error $error."<LI>ошибка</LI>\n"
}
?>


В данном случае я пытаюсь сделать следующее. В файле spamlist.php находится список mail адресов, с которых постоянно спамят формы. Я пробую сделать защиту от этого путём записи mail адресов и url. У меня каталог статей, поэтому мне проще всего блокировать спамеров, которые добавляют статьи с определёнными адресами в переменной contact.

   
 
 автор: Freddie_X   (28.02.2008 в 16:36)   письмо автору
 
   для: relikt   (28.02.2008 в 15:03)
 

А что именно не работает?

   
 
 автор: MIchail1982   (28.02.2008 в 17:15)   письмо автору
 
   для: Freddie_X   (28.02.2008 в 16:36)
 

1 какова структура файла spamlist
2 имхо лучше использовать file вместо file_get_contents т.к 1й возвращает массив строк, а 2й строку

   
 
 автор: relikt   (28.02.2008 в 18:30)   письмо автору
 
   для: MIchail1982   (28.02.2008 в 17:15)
 

структура файла spamlist.php


m@m.ru
1@1.ru


Каждый новый mail на новой строчке. Не работает следующее: когда, например пользователь пишет один из спамных адресов, должна выводиться ошибка.

   
 
 автор: relikt   (28.02.2008 в 18:32)   письмо автору
 
   для: Freddie_X   (28.02.2008 в 16:36)
 

В случае совпадения введённого адреса с адресом из спам листа должна выводиться ошибка, но этого нет.

   
 
 автор: MIchail1982   (28.02.2008 в 18:45)   письмо автору
 
   для: relikt   (28.02.2008 в 18:32)
 

если не слишком много адресов, попробуйте так
<?php
$action 
'some2do';
$contacts "1@1.ru";
$filenname "spamlist.php";
$bu file($filenname);
if (
in_array($contacts$bu)) {
        
$action "";
        
$error $error."<LI>ошибка</LI>\n";
}
echo 
"$action<br>$error";
?>

   
 
 автор: relikt   (28.02.2008 в 18:57)   письмо автору
 
   для: MIchail1982   (28.02.2008 в 18:45)
 

Адресов не много 15, пока.
Но, не работает. Ошибка так и не появилась.

   
 
 автор: relikt   (28.02.2008 в 23:25)   письмо автору
 
   для: relikt   (28.02.2008 в 18:57)
 

А как можно по другому сравнить строку и масив?

   
 
 автор: kasmanaft   (29.02.2008 в 07:18)   письмо автору
 
   для: relikt   (28.02.2008 в 23:25)
 

Как заметил mihdan, строки в массиве перед этим делом надо trim'нуть :).

Что у вас в $contacts содержится? Наверняка, нет "ограничителей", необходимых для preg_match().
Может быть, проще воспользоваться какой-нибудь strpos().
А может, построчно читать файл fgets() и сравнивать...

   
 
 автор: relikt   (01.03.2008 в 11:52)   письмо автору
 
   для: kasmanaft   (29.02.2008 в 07:18)
 

в $contacts приходит только email. Предварительно


$contacts = isset($_POST["contacts"]) ? trim($_POST["contacts"]) : "";
$contacts = substr($contacts, 0, 60); 
$contacts = htmlspecialchars(stripslashes($contacts)); 

   
 
 автор: mihdan   (28.02.2008 в 18:47)   письмо автору
 
   для: relikt   (28.02.2008 в 15:03)
 

trim();

   
 
 автор: mefestofel   (01.03.2008 в 12:21)   письмо автору
 
   для: relikt   (28.02.2008 в 15:03)
 

> Я пробую сделать защиту от этого путём записи mail адресов и url.

Файл у Вас разрастется бог занет до каких размеров, тем более вместе с url, проще сразу все помещать в таблицу в БД...

   
Rambler's Top100
вверх

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