PDA

Просмотр полной версии : Ишю скрипт для составления текста


in_colour
07.07.2008, 07:58
Смысл такой - есть определённый текст, в конце которого на той же строке поле для ввода, в которое любой может что-то дописать и после нажатия кнопки "Добавить" написанное прибавляется к основному тексту.

Получается что-то вроде текста, который может дополнить каждый. Хорошо бы ещё что-бы нельзя было добавлять мат и прочую похабщину..
Заранее спасибо :)

MafiaBoy3
07.07.2008, 08:34
Это же скрипт комментария!

Chaak
07.07.2008, 08:42
Вот что написал, поддерживает цензуру. Лови:
<?php
$cenz = array("***", "*****", "мудак", "блядь"); //Сюда впишешь нехоршие слова по примеру.

echo file_get_contents("text.txt");
echo "<form action='' method='POST'><input type='text' name='txt' size = '30' maxlength='30'><input type='submit' name='ok' value='Добавить!'></form>";

if(isset($_POST['ok'])){
$text = " ".$_POST['txt'];
foreach($cenz as $word){
$text = str_replace($word,"",$text);
}
$f = fopen("text.txt","at");
flock($f,2);
fwrite($f,$text);
flock($f,3);
fclose($f);
}
?>

Создаешь в этой же папке файл text.txt, и ставишь права доступа(chmod) - 777

Можешь ище закинуть в туже папку файл .htaccess:
<Files text.txt>
Order allow,deny
deny from all
</Files>
Он нужен чтобы не посмотрели файл с текстом.

Пользуйся!

Вот **** заблокировала систему цензуру:( исправишь))) :D

Foxtrot1
07.07.2008, 12:15
))) покупай синонимайзер...

inlanger
07.07.2008, 12:23
хм...так можно и накатать скрипт игры в "слова", "города" и т.д.

biophreak
07.07.2008, 13:27
Можно, но как ты разберешься с параллельными комментами? :) Тогда либо регать юзеров и в очередь выставлять их, а то каша получится ))))

in_colour
08.07.2008, 00:42
Chaak, респект за быструю помощь! :cool:

Только вот проблема - введённое слово добавляется не сразу после нажатия а только после следующего нажатия. Куда-то съедается, короче говоря :rolleyes: А если ф5 зажать, то последнее слово будет постоянно добавляться..

И вот это зачем?

header("Location: sc.php");

С этой строкой выдаёт ошибку, без неё в порядке всё.


:)

bxN5
08.07.2008, 01:14
ну пусть коменты в базе лежат, в базу дописуй и все

-=Static=-
08.07.2008, 03:30
И вот это зачем?

header("Location: sc.php");

С этой строкой выдаёт ошибку, без неё в порядке всё.


Это для того, чтоб небыло такого, что нажимаешь F5 а там опять тоже слово добавляется.
Тока чтоб ошибки небыло надо написать вот так:


<?php
$cenz = array("***", "*****", "мудак", "блядь"); //Сюда впишешь нехоршие слова по примеру.

if(isset($_POST['ok'])){
$text = str_replace($word,""," ".$_POST['txt']);
$f = fopen("text.txt","at");
flock($f,2);
fwrite($f,$text);
flock($f,3);
fclose($f);
header("Location: sc.php");
exit();
}

echo file_get_contents("text.txt");
echo "<form action='' method='POST'><input type='text' name='txt' size = '30' maxlength='30'><input type='submit' name='ok' value='Добавить!'></form>";

?>


И имя твоего скрипта должно быть: sc.php

Solker
08.07.2008, 03:43
Xss уберите, и сделайте на Ajax =)

in_colour
08.07.2008, 04:09
-=Static=-, спасибо! :)
Но после нажатия кнопки - Warning: Cannot modify header information - headers already sent и ссылка на ту же строку с header

Solker, как? :)

Solker
08.07.2008, 04:11
Solker, как? :)

Как XSS убрать?
htmlspecialchars()

-=Static=-
08.07.2008, 04:27
[
Но после нажатия кнопки - Warning: Cannot modify header information - headers already sent и ссылка на ту же строку с header



Значит у тебя стоит где-то вывод в браузер. Или ты не поменял местами блоки в скрипте, либо у тебя в самом начале скрипта есть пробел перед знаком <?

Solker
08.07.2008, 04:39
Ну да...
Давайте развивать идею =)
Каждый внесет свою лепту, хех.

<?php

$cenz = array("***", "*****", "мудак", "блядь"); //Сюда впишешь нехоршие слова по примеру.

if(isset($_POST['ok'])){

$text = htmlspecialchars(str_replace($word,""," ".$_POST['txt']));
$f = fopen("text.txt","at");
flock($f,2);
fwrite($f,$text);
flock($f,3);
fclose($f);
header("Location: ".$_SERVER[SCRIPT_NAME]);
exit();
}

echo file_get_contents("text.txt");
echo "<form action='' method='POST'><input type='text' name='txt' size = '30' maxlength='30'><input type='submit' name='ok' value='Добавить!'></form>";

?>

Убрал доступную XSS и теперь название скрипта не обязательно должно быть cs.php.

Продолжайте =)

in_colour
08.07.2008, 04:44
Работает как надо, всем большое человеческое спасибо :)

Solker
08.07.2008, 04:53
Ппц мне делать нефик =)
Добавил Нормальный фильтр мата =)

<?php

@setlocale(LC_ALL, array ('ru_RU.CP1251', 'rus_RUS.1251'));

$filtr = "/\w{0,5}[хx]([хx\s\!@#\$%\^&*+-\|\/]{0,6})[уy]([уy\s\!@#\$%\^&*+-\|\/]{0,6})[ёiлeеюийя]\w{0,7}|\w{0,6}[пp]([пp\s\!@#\$%\^&*+-\|\/]{0,6})[iие]([iие\s\!@#\$%\^&*+-\|\/]{0,6})[3зс]([3зс\s\!@#\$%\^&*+-\|\/]{0,6})[дd]\w{0,10}|[сcs][уy]([уy\!@#\$%\^&*+-\|\/]{0,6})[4чkк]\w{1,3}|\w{0,4}[bб]([bб\s\!@#\$%\^&*+-\|\/]{0,6})[lл]([lл\s\!@#\$%\^&*+-\|\/]{0,6})[yя]\w{0,10}|\w{0,8}[её][bб][лске@eыиаa][наи@йвл]\w{0,8}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[uу]([uу\s\!@#\$%\^&*+-\|\/]{0,6})[н4ч]\w{0,4}|\w{0,4}[еeё]([еeё\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[нn]([нn\s\!@#\$%\^&*+-\|\/]{0,6})[уy]\w{0,4}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[оoаa@]([оoаa@\s\!@#\$%\^&*+-\|\/]{0,6})[тnнt]\w{0,4}|\w{0,10}[ё]([ё\!@#\$%\^&*+-\|\/]{0,6})[б]\w{0,6}|\w{0,4}[pп]([pп\s\!@#\$%\^&*+-\|\/]{0,6})[иeеi]([иeеi\s\!@#\$%\^&*+-\|\/]{0,6})[дd]([дd\s\!@#\$%\^&*+-\|\/]{0,6})[oоаa@еeиi]([oоаa@еeиi\s\!@#\$%\^&*+-\|\/]{0,6})[рr]\w{0,12}/i";

if(isset($_POST['txt'])){

$text = htmlspecialchars($_POST['txt']);
$text = preg_replace($filtr, '[Censored]', $text);

$f = fopen("text.txt","at");
flock($f,2);
fwrite($f," ".$text);
flock($f,3);
fclose($f);

header("Location: ".$_SERVER['SCRIPT_NAME']);
exit();
}

echo file_get_contents("text.txt");
echo ("<form action='".$_SERVER['SCRIPT_NAME']."' method='POST'>
<input type='text' name='txt' size = '30' maxlength='30'>
<input type='submit' value='Добавить!'>
</form>");

?>

-=Static=-
08.07.2008, 04:57
))))))) осталось тока диз сообразить *rolf*
И бан добавить по Ip =)


Кста.... maxlength='30' - это ограничение не имеет особого смысла)) Ну от обычного юзера канешн поможет) а так толку от него 0 =)

in_colour
08.07.2008, 05:06
Дизайн сейчас я вымутю, а бан по айпи по старинке через .htaccess :)

Solker
08.07.2008, 05:12
-=Static=-
Не стесняйся =)

Теперь замутим тему, типо Тегов, т.е. у каждой фразы будет разный размер шрифта =)

<?php

@setlocale(LC_ALL, array ('ru_RU.CP1251', 'rus_RUS.1251'));

$filtr = "/\w{0,5}[хx]([хx\s\!@#\$%\^&*+-\|\/]{0,6})[уy]([уy\s\!@#\$%\^&*+-\|\/]{0,6})[ёiлeеюийя]\w{0,7}|\w{0,6}[пp]([пp\s\!@#\$%\^&*+-\|\/]{0,6})[iие]([iие\s\!@#\$%\^&*+-\|\/]{0,6})[3зс]([3зс\s\!@#\$%\^&*+-\|\/]{0,6})[дd]\w{0,10}|[сcs][уy]([уy\!@#\$%\^&*+-\|\/]{0,6})[4чkк]\w{1,3}|\w{0,4}[bб]([bб\s\!@#\$%\^&*+-\|\/]{0,6})[lл]([lл\s\!@#\$%\^&*+-\|\/]{0,6})[yя]\w{0,10}|\w{0,8}[её][bб][лске@eыиаa][наи@йвл]\w{0,8}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[uу]([uу\s\!@#\$%\^&*+-\|\/]{0,6})[н4ч]\w{0,4}|\w{0,4}[еeё]([еeё\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[нn]([нn\s\!@#\$%\^&*+-\|\/]{0,6})[уy]\w{0,4}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[оoаa@]([оoаa@\s\!@#\$%\^&*+-\|\/]{0,6})[тnнt]\w{0,4}|\w{0,10}[ё]([ё\!@#\$%\^&*+-\|\/]{0,6})[б]\w{0,6}|\w{0,4}[pп]([pп\s\!@#\$%\^&*+-\|\/]{0,6})[иeеi]([иeеi\s\!@#\$%\^&*+-\|\/]{0,6})[дd]([дd\s\!@#\$%\^&*+-\|\/]{0,6})[oоаa@еeиi]([oоаa@еeиi\s\!@#\$%\^&*+-\|\/]{0,6})[рr]\w{0,12}/i";

if(!empty($_POST['txt'])){

$text = trim(htmlspecialchars($_POST['txt']));

$text = preg_replace($filtr, '[Censored]', $text);

$text = '<font size="'.mt_rand(1,8).'">'.$text.'</font>';

$f = fopen("text.txt","at");
flock($f,2);
fwrite($f," ".$text);
flock($f,3);
fclose($f);

header("Location: ".$_SERVER['SCRIPT_NAME']);
exit();
}

echo file_get_contents("text.txt");
echo ("<form action='".$_SERVER['SCRIPT_NAME']."' method='POST'>
<input type='text' name='txt' size = '30' maxlength='30'>
<input type='submit' value='Добавить!'>
</form>");

?>

Забавно получается =) Мол каждый может добавить свой Тэг =)

+ Ктонить сделайте, что бы фраза обрезалась под коенец первого слова, т.е. макс - 1 слово.
И что бы это слово было максимум 7 символов =)

mad_xakep
08.07.2008, 14:53
еще цвет рандомный сделайте

и чтоб ссылки нельзя вводить было

in_colour
08.07.2008, 17:53
Кста.... maxlength='30' - это ограничение не имеет особого смысла)) Ну от обычного юзера канешн поможет) а так толку от него 0 =)

Сейчас никакие теги ввести нельзя, существует ещё какая-то опасность со строкой ввода?

Если ввести ещё цвет, то это будет похоже на дневник 14 летней девочки с ли.ру, оставлю пока так. :cool:

Одно предложение уже народ написал, но всё равно находится кто-то, кто может сказать только Х*Й ;)

mad_xakep
08.07.2008, 17:56
скажите как сделать чтоб ссылки вводить нельзя было!?

biophreak
08.07.2008, 18:03
Смотря какого плана...в любом случае резать регекспами, либо по шаблону, либо по http:// https:// ftp:// итд, либо по маске чтото типа /[a-z0-9].[a-z]{2,5}/i - но всеравно не получится порезать все ))

mad_xakep
08.07.2008, 18:08
я пробовал фильтр с этого скрипта на свой заменить но нифига непашет

$filtr = "^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)";

biophreak
08.07.2008, 18:08
Эм...код полностью покажи :))

mad_xakep
08.07.2008, 18:10
дык код на пред идущей старице в самом конце

-=Static=-
08.07.2008, 18:16
я пробовал фильтр с этого скрипта на свой заменить но нифига непашет

$filtr = "^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)";

Там фильтр то на мат, а не на ссылки =)

mad_xakep
08.07.2008, 18:17
Там фильтр то на мат, а не на ссылки =)
я вообщето знаю а мне на мат ненужен мне надо на ссылки я и написал что тот фильтр я заменил на свой от ссылки и он не пашет

in_colour
08.07.2008, 18:22
Кстати, у этого фильтра достаточно устравшие взгляды на мат :)

Chaak
08.07.2008, 18:27
Кстати, у этого фильтра достаточно устравшие взгляды на мат :)
Морфный стоит ($$$) могу написать, за $ стучи в асю.

А фильтровать ссылки нет смысла так как, спамить могут не http://google.com а google.com, тут уже не отличишь.

mad_xakep
08.07.2008, 18:28
2 Chaak
а по .com и по .ru ?

-=Static=-
08.07.2008, 18:49
я вообщето знаю а мне на мат ненужен мне надо на ссылки я и написал что тот фильтр я заменил на свой от ссылки и он не пашет

Я бы как-нить так сделал:


<?php

@setlocale(LC_ALL, array ('ru_RU.CP1251', 'rus_RUS.1251'));

$filtr = "#^(.*)+\.(ru|com|net|gg|h15|h18|de|ua|su|org|net|e du)#i";

if(!empty($_POST['txt'])){

$text = trim(htmlspecialchars(strtolower($_POST['txt'])));

$text = preg_replace($filtr, '[Censored]', $text);

$text = '<font size="'.mt_rand(1,8).'">'.$text.'</font>';

$f = fopen("text.txt","at");
flock($f,2);
fwrite($f," ".$text);
flock($f,3);
fclose($f);

header("Location: ".$_SERVER['SCRIPT_NAME']);
exit();
}

echo file_get_contents("text.txt");
echo ("<form action='".$_SERVER['SCRIPT_NAME']."' method='POST'>
<input type='text' name='txt' size = '30' maxlength='30'>
<input type='submit' value='Добавить!'>
</form>");

?>