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

Discussion in 'PHP' started by in_colour, 7 Jul 2008.

  1. in_colour

    in_colour New Member

    Joined:
    26 Aug 2007
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Смысл такой - есть определённый текст, в конце которого на той же строке поле для ввода, в которое любой может что-то дописать и после нажатия кнопки "Добавить" написанное прибавляется к основному тексту.

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

    MafiaBoy3 Banned

    Joined:
    14 Apr 2007
    Messages:
    295
    Likes Received:
    15
    Reputations:
    1
    Это же скрипт комментария!
     
  3. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Вот что написал, поддерживает цензуру. Лови:
    PHP:
    <?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:
    PHP:
    <Files text.txt
    Order allow,deny
    deny from all
    </Files>
    Он нужен чтобы не посмотрели файл с текстом.

    Пользуйся!

    Вот **** заблокировала систему цензуру:( исправишь))) :D
     
    #3 Chaak, 7 Jul 2008
    Last edited: 8 Jul 2008
    1 person likes this.
  4. Foxtrot1

    Foxtrot1 Elder - Старейшина

    Joined:
    27 Mar 2008
    Messages:
    0
    Likes Received:
    15
    Reputations:
    5
    ))) покупай синонимайзер...
     
  5. inlanger

    inlanger Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    хм...так можно и накатать скрипт игры в "слова", "города" и т.д.
     
  6. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    Можно, но как ты разберешься с параллельными комментами? :) Тогда либо регать юзеров и в очередь выставлять их, а то каша получится ))))
     
  7. in_colour

    in_colour New Member

    Joined:
    26 Aug 2007
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Chaak, респект за быструю помощь! :cool:

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

    И вот это зачем?
    PHP:
        header("Location: sc.php");
    С этой строкой выдаёт ошибку, без неё в порядке всё.


    :)
     
    #7 in_colour, 8 Jul 2008
    Last edited: 8 Jul 2008
  8. bxN5

    bxN5 Elder - Старейшина

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    ну пусть коменты в базе лежат, в базу дописуй и все
     
  9. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    Это для того, чтоб небыло такого, что нажимаешь F5 а там опять тоже слово добавляется.
    Тока чтоб ошибки небыло надо написать вот так:

    PHP:
    <?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
     
    #9 -=Static=-, 8 Jul 2008
    Last edited: 8 Jul 2008
  10. Solker

    Solker Elder - Старейшина

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    Xss уберите, и сделайте на Ajax =)
     
  11. in_colour

    in_colour New Member

    Joined:
    26 Aug 2007
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    -=Static=-, спасибо! :)
    Но после нажатия кнопки - Warning: Cannot modify header information - headers already sent и ссылка на ту же строку с header

    Solker, как? :)
     
    #11 in_colour, 8 Jul 2008
    Last edited: 8 Jul 2008
  12. Solker

    Solker Elder - Старейшина

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    Как XSS убрать?
    htmlspecialchars()
     
  13. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0

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

    Solker Elder - Старейшина

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    Ну да...
    Давайте развивать идею =)
    Каждый внесет свою лепту, хех.

    PHP:
    <?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.

    Продолжайте =)
     
    1 person likes this.
  15. in_colour

    in_colour New Member

    Joined:
    26 Aug 2007
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Работает как надо, всем большое человеческое спасибо :)
     
  16. Solker

    Solker Elder - Старейшина

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    Ппц мне делать нефик =)
    Добавил Нормальный фильтр мата =)

    PHP:
    <?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>"
    );  

    ?>
     
  17. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    ))))))) осталось тока диз сообразить *rolf*
    И бан добавить по Ip =)


    Кста.... maxlength='30' - это ограничение не имеет особого смысла)) Ну от обычного юзера канешн поможет) а так толку от него 0 =)
     
    #17 -=Static=-, 8 Jul 2008
    Last edited: 8 Jul 2008
  18. in_colour

    in_colour New Member

    Joined:
    26 Aug 2007
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Дизайн сейчас я вымутю, а бан по айпи по старинке через .htaccess :)
     
  19. Solker

    Solker Elder - Старейшина

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    -=Static=-
    Не стесняйся =)

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

    PHP:
    <?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 символов =)
     
    #19 Solker, 8 Jul 2008
    Last edited: 8 Jul 2008
    1 person likes this.
  20. mad_xakep

    mad_xakep Banned

    Joined:
    10 Apr 2007
    Messages:
    190
    Likes Received:
    68
    Reputations:
    0
    еще цвет рандомный сделайте

    и чтоб ссылки нельзя вводить было
     
    #20 mad_xakep, 8 Jul 2008
    Last edited: 8 Jul 2008