Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PsNews] baaaaad words :P, zakrywanie bluzgoff :D
Mamber
post 19.11.2004, 16:22:41
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 25.10.2004

Ostrzeżenie: (0%)
-----


Witam!
Mam problem a zarazem prośbę. Prowadzę dość często odwiedzany serwis, newsy są komentowane w dużej liczbie. Niestety ponieważ nie siedze przed monitorem 24h na dobe, jest dużo bluźnierstw, a nie moge zbanować wiekszości adresów ip, ponieważ użytkownicy korzystają z tej samej sieci i skrypt odczytuje wspólne ip, w przeciwieństwie do innych skróptów. Czy istenieje możliwość zrobienia uaktualnienia z możliwością blokady słów i lepszym "czytnikiem" ip?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
kubatron
post 19.11.2004, 17:15:45
Post #2





Grupa: Zarejestrowani
Postów: 581
Pomógł: 0
Dołączył: 21.07.2003
Skąd: Jasło

Ostrzeżenie: (0%)
-----


To jest proste :-) Wystarczy funkcja str_replace()" title="Zobacz w manualu PHP" target="_manual, i proste jej wykorzystanie, podam przykład :-)
Myśle że korzystasz z bazy danych smile.gif
  1. <?php
  2. function bad_words( $txt )
  3. {
  4. $resQuery = mysql_query(&#092;"SELECT * FROM words ORDER BY id DESC\") or die (mysql_error());
  5. while ( $arrWord = mysql_fetch_assoc ( $resQuery ) )
  6. {
  7. $txt = str_replace ( $arrWord['bad_word'], $arrWord['replace_word'], $txt );
  8. return $txt;
  9. }
  10. }
  11. ?>

To jest prosty sposób, ale możesz podrasować go i usprawnić że będzie ci to robił lepiej, ale ten jest dobry i prosty ;-)


--------------------
„Człowiek jest wielki nie przez to, co posiada, lecz przez to, kim jest;
nie przez to, co ma, lecz przez to, czym dzieli się z innymi.”
Jan Paweł II
Go to the top of the page
+Quote Post
tiraeth
post 19.11.2004, 18:05:33
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Niestety ale użytkownik korzysta z psnews opartego na txt smile.gif

Proponuje pokazać kod odpowiedzialny za wyświetlanie komentarzy (wycinek z pliku show.php etc.)
Go to the top of the page
+Quote Post
Mamber
post 20.11.2004, 09:42:19
Post #4





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 25.10.2004

Ostrzeżenie: (0%)
-----


OK, wiec pokazuje "wycinek" kodu odpowiedzialny za wyswietlanie komentarzy w pliku show.php:

  1. <?php
  2. //...reszta kodu
  3. /* cały news + komments :) */
  4. case show_all:
  5. $newsfile = file(&#092;"$newspath/news.txt\");
  6. reset($newsfile);
  7. foreach($newsfile as $news){
  8. $news = explode(&#092;"||\", $news);
  9. if($news[0] == $_GET[&#092;"no\"]){
  10. $news[2] = pscode($news[2]);
  11. if($config[&#092;"emoty_news\"] == \"tak\"){
  12. $news[2] = emots($news[2], $newspath);
  13. }
  14. $news[2] = stripslashes($news[2]);
  15. $news[2] = preg_replace(&#092;"'||'s\", \"||\", $news[2]);
  16.  
  17. $news[1] = stripslashes($news[1]);
  18. $news[1] = preg_replace(&#092;"'||'s\", \"||\", $news[1]);
  19.  
  20. //$news[1] = wordwrap($news[1], 50, \" \", 1);
  21. //$news[2] = wordwrap($news[2], 50, \" \", 1);
  22.  
  23. $data = date(&#092;"d.m.Y, H:i\", $news[3]);
  24.  
  25. if($config[&#092;"nimgs\"]==\"tak\"){
  26. $img_path = &#092;"$newspath/nimgs/$news[5]\";
  27. if((file_exists($img_path))&&($news[5]!=&#092;"brak\")&&($news[5]!=\"\")){
  28. $news[2] = &#092;"<img src=\"$img_path\" align=\"\".$config[\"nimgs_align\"].\"\" border=0> \".$news[2];
  29. }
  30. }
  31.  
  32. if(file_exists(&#092;"$newspath/komentarze/$news[0]\")){
  33. $komfile = file(&#092;"$newspath/komentarze/$news[0]\");
  34. $ilekomentarzy = count($komfile);
  35. }
  36. else{ $ilekomentarzy = 0; }
  37.  
  38. $print_center.= tplparse(array('{TYTUL}','{NEWS}','{AUTOR}','{EMAIL}','{DATA}','{KOMENTARZE}','{ILEKOMENTARZY}','{ZRODLO}','{SKOMENTUJ}'),array($news[1],$news[2],$userlist[$news[4]][3],$userlist[$news[4]][4],$data,$config[&#092;"adres\"].\"function=show_all&no=$news[0]\",$ilekomentarzy,$news[6],$config [\"adres\"].\"function=add_kom&no=$news[4]\",),$config[\"template\"],$newspath,\"news.html\");
  39. }
  40. }
  41. $print_center.= &#092;"<center>[<a href=\"\". $config[\"adres\"] .\"function=add_kom&no=\". $_GET[\"no\"] .\"\">Komentuj</a>] [<a href=\"\". $config[\"adres\"] .\"\">Wróć do newsów</a>]</center><br>\";
  42.  
  43. if($ilekomentarzy<1){ $print_center.= news_wiadomosc(&#092;"Do tego newsa nie dodano jeszcze żadnego komentarza.<br>[<a href=\"\".$config[\"adres\"].\"function=add_kom&no=\".$_GET[\"no\"].\"\">Skomentuj</a>]\"); }
  44. else{
  45. reset($komfile);
  46. foreach($komfile as $kom){
  47. $kom = explode(&#092;"||\", $kom);
  48. if($config[&#092;"emoty_kom\"] == \"tak\"){
  49. $kom[1] = emots($kom[1], $newspath);
  50. }
  51. $kom[2] = stripslashes($kom[2]);
  52. $kom[2] = preg_replace(&#092;"'||'s\", \"||\", $kom[2]);
  53.  
  54.  
  55. $kom[1] = stripslashes($kom[1]);
  56. $kom[1] = preg_replace(&#092;"'||'s\", \"||\", $kom[1]);
  57.  
  58. $kom[1] = wordwrap($kom[1], 50, &#092;" \", 1);
  59. $kom[2] = wordwrap($kom[2], 50, &#092;" \", 1);
  60.  
  61. $data = date(&#092;"d.m.Y, H:i\", $kom[4]);
  62.  
  63. $print_center.= tplparse(array('{KOMENTARZ}','{AUTOR}','{EMAIL}','{DATA}'),array($kom[1],$kom[2],$kom[3],$data),$config[&#092;"template\"],$newspath,\"komentarz.html\");
  64. }
  65. }
  66.  
  67. break;
  68.  
  69. /* dodawanie komentarza */
  70. case add_kom:
  71. $banfile = file(&#092;"$newspath/ban.txt\");
  72. $ip = $_SERVER[&#092;"REMOTE_ADDR\"];
  73. $ban = &#092;"false\";
  74. foreach($banfile as $linia){
  75. $linia = explode(&#092;"||\", $linia);
  76. if($linia[0] == $ip){ $ban = &#092;"true\"; }
  77. }
  78. if($ban == &#092;"true\"){
  79. $print_center = news_wiadomosc(&#092;"Przepraszamy, ale nie masz zezwolenia na dodanie komentarza, ponieważ twoje
     
  80. P: ($ip) zostało zablokowane przez administratora.<br>[<a href=\"\".$config[\"adres\"].\"\">Wróć do newsów</a>]\");
  81. }
  82. else{
  83. if($_GET[\"do\"] == \"save\"){
  84. $filename = \"$newspath/komentarze/\".$_GET[\"no\"];
  85. if(file_exists($filename)){
  86. $kom_autor = $_POST[\"kom_autor\"];
  87. $kom_email = $_POST[\"kom_email\"];
  88. $komentarz = $_POST[\"komentarz\"];
  89. $kom_autor = strip_tags($kom_autor);
  90. $kom_email = strip_tags($kom_email);
  91. $komentarz = strip_tags($komentarz);
  92. $kom_autor = str_replace(\"|\", \"|\", $kom_autor);
  93. $kom_email = str_replace(\"|\", \"|\", $kom_email);
  94. $komentarz = str_replace(\"|\", \"|\", $komentarz);
  95. $kom_autor = preg_replace(\"'n|rn|r'si\", \"\", $kom_autor);
  96. $kom_email = preg_replace(\"'n|rn|r'si\", \"\", $kom_email);
  97. $komentarz = preg_replace(\"'n|rn|r'si\", \"<br>\", $komentarz);
  98. $numer = max_l_plik(0, \"||\", $filename)+1;
  99.  
  100. $file = fopen($filename, \"a+\");
  101. flock($file, 2);
  102. $puts = \"$numer||$komentarz||$kom_autor||$kom_email||\".time().\"||$ip||n\";
  103. fputs($file, $puts);
  104. flock($file, 3);
  105. fclose($file);
  106. $print_center = '<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL='.$config[\"adres\"].'\">';
  107. }
  108. else{
  109. $print_center = news_wiadomosc(\"Nie można dodać komentarza - brak pliku z bazą danych do tego newsa.<br>[<a href=\".$config[\"adres\"].\">Wróć do newsów</a>]\");
  110. }
  111. }
  112. else{
  113. $print_center.= \"
  114. <form action=&#092;"\". $config[\"adres\"].\"function=add_kom&no=\".$_GET[\"no\"].\"&do=save\" method=post name=formularz>
  115. Autor:<br><input type=text name=&#092;"kom_autor\"><br>
  116. Email:<br><input type=text name=&#092;"kom_email\"><br>
  117. Komentarz:<br>&#092;";
  118. if($config[&#092;"emoty_kom\"] == \"tak\"){ $print_center.= list_emots($newspath,\"komentarz\").\"<br>\"; }
  119. $print_center.= &#092;"<textarea style=\"width:300; height:150\" name=\"komentarz\"></textarea><br>
  120. <input type=submit value=&#092;"dodaj\">
  121. <br><a href=&#092;"\".$config[\"adres\"].\"\">[Rezygnuj]</a>
  122. </form>
  123. &#092;";
  124. }
  125. }
  126. break;
  127. }
  128.  
  129.  
  130.  
  131. /* wyświetlanie */
  132. eval(&#092;"?>\".$print_center.\"<?\");
  133. ?>


Ten post edytował DeyV 20.11.2004, 18:13:33
Go to the top of the page
+Quote Post
ona_15
post 20.11.2004, 13:44:37
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 17.11.2004

Ostrzeżenie: (0%)
-----


Mam taki sam problem..... sad.gif
Go to the top of the page
+Quote Post
tiraeth
post 20.11.2004, 14:20:54
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. ######### ZNAJDZ #########
  4. $kom[1] = wordwrap($kom[1], 50, &#092;" \", 1);
  5. $kom[2] = wordwrap($kom[2], 50, &#092;" \", 1);
  6.  
  7. ######### ZAMIEN NA #########
  8. // MODIFI BY TIRAETH
  9. function cenzura($zmienna)
  10. {
  11. $file = file($newspath.'cenzura.txt');
  12. for($i=0; $i<count($file); $i++)
  13. {
  14. $slowo = $file[$i];
  15.  
  16. // zamieniamy slowo na cenzurowane (tylko dwa znaki - pierwszy i ostatni);
  17. $zamiana = $slowo{0};
  18. $ostatnie = substr($slowo, -1);
  19. $wielkosc = strlen($slowo);
  20. $wielkosc--;
  21. $wielkosc--;
  22. for($a=0; $a<$wielkosc; $a++);
  23. {
  24. $zamiana.='*';
  25. }
  26. $zamiana.=$ostatnie;
  27. // koniec
  28.  
  29. $zmienna = str_replace($znak, $zamiana, $zmienna);
  30. }
  31. return $zmienna;
  32. }
  33. // MODIFI BY TIRAETH
  34. $kom[1] = wordwrap($kom[1], 50, &#092;" \", 1);
  35. $kom[1] cenzura($kom[1]);
  36. $kom[2] = wordwrap($kom[2], 50, &#092;" \", 1);
  37.  
  38. ?>


Plik cenzura.txt powinien wyglądać tak:
Kod
kurka
malpa
debil
admin

Czyli każde słowo w nowej linii. Plik ten powinien być w katalogu z PSNews'em smile.gif

Ten post edytował Tiraeth 20.11.2004, 14:22:20
Go to the top of the page
+Quote Post
Mamber
post 21.11.2004, 17:54:07
Post #7





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 25.10.2004

Ostrzeżenie: (0%)
-----


A jak lub gdzie wpisac brzydkie slowo i jego zamiennik ? ohmy.gif
Go to the top of the page
+Quote Post
yavaho
post 21.11.2004, 18:53:53
Post #8





Grupa: Zarejestrowani
Postów: 449
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $tresc='tekst wprost z formularza z brzydkimi slowami';
  3. $arrSlowa=array( 'brzydkie_slowo_1','brzydkie_slowo_2','brzydkie_slowo_3' );
  4. $tresc=str_replace( $arrSlowa, '&%@#', $tresc );
  5. ?>


--------------------
Książki informatyczneKsiążki biznesowe
Warsztat: notepad hardcore
Go to the top of the page
+Quote Post
Mamber
post 21.11.2004, 22:13:14
Post #9





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 25.10.2004

Ostrzeżenie: (0%)
-----


Cytat(yavaho @ 2004-11-21 17:53:53)
  1. <?php
  2. $tresc='tekst wprost z formularza z brzydkimi slowami';
  3. $arrSlowa=array( 'brzydkie_slowo_1','brzydkie_slowo_2','brzydkie_slowo_3' );
  4. $tresc=str_replace( $arrSlowa, '&%@#', $tresc );
  5. ?>

Mam to wstawic w kod, ktory podal Tiraeth? Jesl tak to w ktorej linijce tiredsmiley.gif
Go to the top of the page
+Quote Post
Ive
post 21.11.2004, 22:40:21
Post #10





Grupa: Zarejestrowani
Postów: 352
Pomógł: 1
Dołączył: 17.07.2003
Skąd: Kazanów

Ostrzeżenie: (0%)
-----


yavaho podal ci zupelnie inny [ i wg mnie najprostszy] sposob cenzury tych twoich newsow.... a nie poprawke do skryptu tiraeth'a
Go to the top of the page
+Quote Post
Mamber
post 22.11.2004, 08:21:00
Post #11





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 25.10.2004

Ostrzeżenie: (0%)
-----


OK, ale jesli chodzi o kod Tiraeth'a to niewiem gdzie wpisać brzydkie slowo i jego zamiennik....

np:
Kod
brzydkie slowo => kobieta lekkich obyczajów

rolleyes.gif

//edit.
A co do yavaho to jak/gdzie wpisywac ( w jakim formularzu) brzydkie slowo oraz jego zamiennik?questionmark.gif i w której części kodu to wkleic?

Ten post edytował Mamber 22.11.2004, 08:47:34
Go to the top of the page
+Quote Post
yavaho
post 22.11.2004, 12:08:55
Post #12





Grupa: Zarejestrowani
Postów: 449
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


W liniach 99-107 masz funkcje filtrujace dane które pochodza z formularza.
wstaw tam:
  1. <?php
  2. $komentarz=str_replace( $BrzydkieSlowa, '&%@#', $komentarz);
  3. ?>
i wszystkie brzydkie słowa które umiescisz w tablicy:
  1. <?php
  2. $BrzydkieSlowa=array( 'brzydkie_slowo_1','brzydkie_slowo_2','brzydkie_slowo_3' );
  3. ?>
zamieni ci na "&%@#"
Tabice oczywiscie musisz umiescic gdzies powyzej funkcji str_replace" title="Zobacz w manualu PHP" target="_manual ktora zamienia te slowa.

Proponuje tam wstawic jeszcze inne zabezpieczenia:
-ograniczenie maxymalnej ilosci znakow w komentarzu
-usuwanie nadmiernej ilosci enterów i spacji
-przelamywanie do nowej lini dlugich wyrazow
-zabezpieczenie przed ponownym wyslaniem tego samego komentarza kilka razy pod rzad
-sprawdzenie poprawnosci adresu e-mail
-itp


--------------------
Książki informatyczneKsiążki biznesowe
Warsztat: notepad hardcore
Go to the top of the page
+Quote Post
Mamber
post 22.11.2004, 16:04:28
Post #13





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 25.10.2004

Ostrzeżenie: (0%)
-----


Cytat(yavaho @ 2004-11-22 11:08:55)
Proponuje tam wstawic jeszcze inne zabezpieczenia:
-ograniczenie maxymalnej ilosci znakow w komentarzu
-usuwanie nadmiernej ilosci enterów i spacji
-przelamywanie do nowej lini dlugich wyrazow
-zabezpieczenie przed ponownym wyslaniem tego samego komentarza kilka razy pod rzad
-sprawdzenie poprawnosci adresu e-mail
-itp

Hmm czy moglbys mi pomoc? Co i jak napisac? :/

//edit.
Jeszcze jedno moje pytanie jak zrobic komentowanie komentarza, chodzi mi zeby to wygladalo mniejwiecej tak:

Kod
- Komentarz nr 1
    |
    => Komentarz1 Komentarza nr 1
    => Komentarz2 Komentarza nr 1
    => Komentarz3 Komentarza nr 1

- Komentarz nr 2
    |
    => Komentarz1 Komentarza nr 2

- Komentarz nr 3


Jednoczesnie zeby tytul komentarzy np:
- Komentarz nr 1
- Komentarz nr 2
- Komentarz nr 3
itp...
byl linkiem do komentowania komentarza
Jak to zrobic? biggrin.gif

Ten post edytował Mamber 22.11.2004, 16:14:19
Go to the top of the page
+Quote Post
yavaho
post 22.11.2004, 23:20:46
Post #14





Grupa: Zarejestrowani
Postów: 449
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


zobacz na te posty: tu i tu

a tu jest przyklad sprawdzenia poprawnosci adresu email
  1. <?php
  2. if(!preg_match(&#092;"/^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+.[a-z]{2,}$/i\", $email))
  3. echo(&#092;"Twój adres email nie jest poprawny.<br>\" );
  4. ?>


A co do tych komentarzy - bo ty chcesz dac mozliwosc rozwiniecia jednego watku w roznych kierunkach? to nie jest takie proste - przynajmniej ja ci w tym nie pomoge bo tego jeszcze nie przerabialem smile.gif Ale gdybym to mial zrobic to tylko na bazie danych a nie na plikach, tak by bylo o wiele prosciej.


--------------------
Książki informatyczneKsiążki biznesowe
Warsztat: notepad hardcore
Go to the top of the page
+Quote Post
ARJ
post 23.11.2004, 23:39:18
Post #15





Grupa: Zarejestrowani
Postów: 453
Pomógł: 22
Dołączył: 20.09.2004
Skąd: Kraków - NH -

Ostrzeżenie: (0%)
-----


a takie pytanie co do komentarzy. jest możliwość zliczenia ile jest dużych liter w komentarzu i jeśli przekraczają np. 50% całości to są przepuszczane przez strtolower??

Ten post edytował ARJ 23.11.2004, 23:39:52


--------------------
Warsztat: Windows 7 Pro 64bit | Apache 2.2 | PHP 5.2 | MySQL 5.0 | PHPmyadmin 2.6.4
Go to the top of the page
+Quote Post
mirst
post 3.12.2004, 16:19:37
Post #16





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 3.12.2004

Ostrzeżenie: (0%)
-----


Cytat(Tiraeth @ 2004-11-20 13:20:54)
Plik cenzura.txt powinien wyglądać tak:
Kod
kurka
malpa
debil
admin

Czyli każde słowo w nowej linii. Plik ten powinien być w katalogu z PSNews'em smile.gif

A czy moze ktos udostepnic gotowy plik cenzura.txt bo co wpisze tam jakies slowo to dowcipnisie wymyslaja kilka nowych ktorych tam jeszcze nie ma sad.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:12