Проверка поля ввода

Fl@sh

Новичок
Проверка поля ввода

Я не очень опытный ещё все до конца не изучил! Решил на скорую руку, но я по пути читаю все от корки до корки! У меня тут такая проблема я пишу гостевую для своего сайта и мне понадобилось сделать так чтобы пользователь не мог ругаться! Тоесть можно сделать так чтобы РНР проверяла что пишет пользователь, допустим составить список нецензурных слов и если одно из таких встретится то вывести соответствующее сообщение!!! Вот мой код я пытался сделать это с помощью фуонкии сравнения, но не получилось:
PHP:
<?php
$remote = $REMOTE_ADDR;
$time = date("d.m.Y - H.i.s");
$filename = "ip_bann.txt";
$filename2 = "cenzor.txt";
$filename3 = "text_message.html";
$fp = fopen($filename,"a") or die("ОШИБКА!");
$fp2 = fopen($filename,"r") or die("ОШИБКА!");
$fp3 = fopen($filename2,"r") or die("ОШИБКА!");
$fp4 = fopen($filename3,"a") or die("ОШИБКА!");
$line = fgets( $fp2, 1024);
$line2 = fgets($fp3, 1024);
if (stristr($line, $remote))
{
echo "Вы заблокированы!!!";
fclose($fp2);
}
else
{
if (strlen($text) >=3)
{
if (strstr($line2, $text))
{
fclose($fp3);
fwrite($fp,"$remote"."-");
fclose($fp);
echo "Вы заблокированы! ";
echo "Нецензурное сообщение! Сам ты - ";
}
else
//начало самой книги
echo "Спасибо за ваш отзыв, он обязательно будет прочитан администратором сайта!"."<br>";
echo "Ваш отзыв: "."$text";
fwrite($fp4, "$text - $time - $remote <br>");
fclose($fp4);
//конец самой книги
}
elseif (strlen($text) <3)
echo "Сообщение должно быть больше 3 символов!!!";
else
echo "ОШИБКА!";
}
?>
Принцип такой если плохое слово есть то пользователя блокируют по IP т если такой пользователь ещё захочет написать то не получится!!!
Жду помощи!!!
 

Фанат

oncle terrible
Команда форума
если ты разделишь свою задачу на более мелкие, и будешь решать их по очереди, то решение будет найти проще.
тем более, что проблема может быть совсем не в коде
 

sakon

П..и.н..ок
Может не стоит заморачиваться? IP штука ненадежная... куки можно отключить... И будут тебе гадить-гадить гадит. Не стоит это потраченого времени.
 

Фанат

oncle terrible
Команда форума
sakon
отстань от человека.
он учится.
на какой задаче учиться - абсолютно всё равно.
со временем сам поймёт, а опыта прибавится
 

Fl@sh

Новичок
А все таки как найти ответ??? Можете пожалуйста конкретно подсказать?
 

Fl@sh

Новичок
Так сейчас сделаем!!!;)

-~{}~ 21.09.05 22:17:

А вот ещё! Тот кусок который отвечает за то чтобы искать нецензурные выражения не работает! Я его отдельнык куском писал и проверял! Тот который отвечает за сравнивание IP работает, а тот который за цензуру нет!:( Вот почему потехонечку выесняю!!!:)
 

Fl@sh

Новичок
А как сделать так чтобы сравнивать слова? Может массив применить? Т почему с IP получается а с этим нет!???
 

sakon

П..и.н..ок
Автор оригинала: Fl@sh
А как сделать так чтобы сравнивать слова?
Может массив применить?
Сам и ответил.
http://ru3.php.net/manual/ru/function.explode.php

Т почему с IP получается а с этим нет!???
Потому, что ты получаешь только ОДНО значение IP, и ищешь подстроку, которая соответсвует этому IP. С текстом несколько иначе. Слов может быть скока угодно. Сначала их надо разбить на отдельные слова, откинуть лишние пробелы, и проверять уже в цикле каждое слово.
 

Fl@sh

Новичок
Завтра или сегодня попробую!!!!!!!!!!! Я болею в школу не хожу!!! Наверно сегодня !!!!!! Все равно вставать не рано!

-~{}~ 21.09.05 22:53:

А так вобще по правильности кода ка? Я имею в виду не очень все запутано? Иещё легко ли такую гостевуху взломать? Например кому-то на моем сайте?
 

sakon

П..и.н..ок
>>легко ли такую гостевуху взломать? Например кому-то на моем сайте?
А где здесь гостевая?
 

Fl@sh

Новичок
Я тут кое что переписал!
PHP:
<?php
$remote = $REMOTE_ADDR;
$time = date("d.m.Y - H.i.s");
$filename = "ip_bann.txt";
$filename3 = "text_message.html";
$fp = fopen($filename,"a") or die("ОШИБКА!");
$fp2 = fopen($filename,"r") or die("ОШИБКА!");
$fp4 = fopen($filename3,"a") or die("ОШИБКА!");
$line = fgets( $fp2, 1024);
//цензура массив
$cenzor = array("лох","дура","дурак");
//цензура массив
$cenzor2 = explode(" ", $text);
$cenzor3 = array_intersect($cenzor, $cenzor2);
$n = count($cenzor3);
if (stristr($line, $remote))
{
echo "Вы заблокированы!!!";
fclose($fp2);
}
else
{
if (strlen($text) >=3)
{
if($n >= 1)
{
fwrite($fp,"$remote"."-");
fclose($fp);
echo "Вы заблокированы! ";
echo "Нецензурное сообщение! Сам ты - ";
}
else
//начало самой книги
echo "Спасибо за ваш отзыв, он обязательно будет прочитан администратором сайта!"."<br>";
echo "Ваш отзыв: "."$text";
fwrite($fp4, "$text - $time - $remote <br>");
fclose($fp4);
//конец самой книги
}
elseif (strlen($text) <3)
echo "Сообщение должно быть больше 3 символов!!!";
else
echo "ОШИБКА!";
}
?>
Вот только единственная проблема если написать "дура!!!" то это слоао не зачтется как цензура! Потомучто оно сравнивается с "дура" в массиве! Бвла бы полезна функция strstr(), как её применить?
 

Фанат

oncle terrible
Команда форума
Fl@sh
Давай договоримся.
Если уж ты не хочешь облегчить работу себе, то давай ты не будешь усложнять её нам.
или мы работаем с примером, который занимается ТОЛЬКО поиском слов в куске текста, или не работаем вообще.
Договорились?
 
Сверху