Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: AntyFlood POMOCY
Forum PHP.pl > Forum > Gotowe rozwiązania > Skrypty forum
maxil
witam a więc tak pisze sobie panel do radia internetowego a konkretnie konsolkę pozdrowień i chciałbym zrobić antyflood ponieważ słuchacze zasypują dj'i co chwila pozdrowieniami sad.gif
może na początek pokaże jak mój skrypt wygląda
  1. <html>
  2. <head>
  3. <title>Pozdrowienia/title>
  4. <meta http-equiv="Content-Type" Content="text/html; charset=windows-1250">
  5. <link rel="stylesheet" href="css/spozdro.css" type="text/css">
  6. </head>
  7. <body>
  8. <center><h2>Wysyłanie Pozdrowień</h2></center>
  9. <?
  10. $fp = fopen("../cofing/konsolastan.php", "r");
  11. $st = fgets($fp, 2);
  12. if ($st == '1') {
  13. $log = 'on';
  14. }
  15. else if ($st == '0') {
  16. $log = 'off';
  17. }
  18.  
  19. if ($log == 'off') {
  20. echo('<br><br><br><br><div class="pozdro"><b>Trwa audycja bez pozdrowień!</b></div><br><br><br><br><br><br><br>');
  21. }
  22. else if ($log == 'on') {
  23.  
  24.  require_once('../config.php');
  25.  
  26. $db = &new mysql;
  27. $db->connect();
  28.  
  29. if(isset($_POST['pozdro']))
  30. {
  31.    if($_POST['txt']=="")
  32.        echo '<br><div class="pozdro2"><b>Nie wpisałeś treści pozdrowienia!</b></div>';
  33.            else
  34.            {    
  35.        if(strlen($_POST['txt'])>500)
  36.        echo '<br><div class="pozdro2"><b>Treść pozdrowienia jest zbyt długa!</b></div>';
  37.            else
  38.            {
  39.            $is=0;
  40.            $recs = $db->showRecords("panel_banip");
  41.  
  42.    if($recs)
  43.            {
  44.        foreach($recs as $r)
  45.            {
  46.    if($r['ip']==$_SERVER['REMOTE_ADDR'])
  47.            $is=1;
  48.            } }
  49.            
  50.    if($is==0)
  51.            {
  52.            $date = date("Y-m-d");
  53.            $time = date("H:i:s");
  54.        
  55.            $_POST['txt'] = strip_tags($_POST['txt']);
  56.            $_POST['txt'] = nl2br($_POST['txt']);        
  57.                
  58. $db->addRecord("panel_pozdro"," '', '".$date."', '".$time."', '".$_POST['nick']."', '".$_POST['txt']."', '".$_SERVER['REMOTE_ADDR']."'");
  59.    
  60.    echo '<br><div class="pozdro" style="text-align:center;"><b>Pozdrowienie zostało wysłane!</b></div>';
  61.        }
  62.        else
  63.    echo '<br><div class="pozdro2" style="text-align:center;"><b>Twój adres IP został zablokowany!</b></div>';
  64.  
  65.        } } }
  66.  
  67.  
  68. echo '<br><form  action="?" method="post">
  69. <table align="center" border="0">
  70. <tr>
  71. <td align="center"><b>Treść: </b></td>
  72. </tr><tr>
  73. <td><textarea name="txt" rows="4" cols="30"></textarea></td>
  74. </tr><tr>
  75. <td align="center"><b>Kto pozdrawia:</b></td>
  76. </tr><tr>
  77. <td align="center"><input type="text" name="nick" size=30 class="trescautor"></td>
  78. </tr><tr>
  79. <td align="center"><br><input type="submit" value="Wyślij" name="pozdro" class="psik"></td>
  80. </tr>
  81. </table>
  82. </form>';
  83.  
  84. }
  85. ?>
  86. </body>
  87. </html>


a więc tak jeśli by to był nie problem to prosił bym o gotowty kod party.gif ale jeśli to jakiś problem to proszę chociarz do jakieś wskazówki ale nie typu 'szukanie nie boli' czy coś takiego snitch.gif
chciałbym żeby skrypt kożystał z sql lub cookie na cookie nie zbyt dobrze się znam więc proszę o bardziej jasne wyjaśnienia biggrin.gif

Z góry dziękuje za pomoc tongue.gif
erix
Cytat
chciałbym żeby skrypt korzystał z sql lub cookie na cookie nie zbyt dobrze się znam więc proszę o bardziej jasne wyjaśnienia

Ustawiasz ciastko na - powiedzmy - 5 minut, jeśli ciastko jest - skrypt nie dodaje pozdrowień. Prościej się chyba nie da. tongue.gif
maxil
a mógłbym prosić o objaśnienie jak zrobić to ciasteczko?
wookieb
Cytat(maxil @ 23.12.2008, 14:47:20 ) *
a mógłbym prosić o objaśnienie jak zrobić to ciasteczko?


Mi mama radziła, że w piekarniku. Ale w mikrofali też da radę (chyba). A jeszcze lepiej zrobić TAKIE ciasteczka za pomoca funkcji która jest pieknie opisana w manualu którego nie czytasz
http://php.net/setcookie
maxil
fajnie czytając tego manuala nie za wiele zrozumiałem bo jak już wcześniej wspomniałem nie znam się na cookie więc lipa;/
a nie mógł by ktoś po prostu powiedzieć jak to zrobić lub wkleić to w mój skrypt rolleyes.gif
wiem że lecę na łatwiznę ale cóż
wookieb
Oczywiście... że nie.
Skoro nie kumasz manuala to jazda google i kursy php.
rav1989
Witam
Jeżeli chodzi o ciastka to jakoś tak:
  1. <?php
  2. (...)
  3. if($is==0)
  4.           {
  5.            if($_COOKIE['antyflood'])/*Sprawdzam czy ciacho antyflood jest true jeżeli tak ->*/
  6. { echo 'Komunikat o foodzie etc...'; /* Tu wpisujesz komunikat gdy ktoś flooduje */
  7. }else{
  8.           $date = date("Y-m-d");
  9.           $time = date("H:i:s");
  10.      
  11.           $_POST['txt'] = strip_tags($_POST['txt']);
  12.           $_POST['txt'] = nl2br($_POST['txt']);        
  13.              
  14. $db->addRecord("panel_pozdro"," '', '".$date."', '".$time."', '".$_POST['nick']."', '".$_POST['txt']."', '".$_SERVER['REMOTE_ADDR']."'");
  15.  
  16.   echo '<br><div class="pozdro" style="text-align:center;"><b>Pozdrowienie zostało wysłane!</b></div>';
  17.  setcookie('antyflood', true, time()+300);  /* ustawiamy ciacho antyflood na true i na 60*5=300 sekund = 5 minut */
  18. }
  19.       }
  20. (...)
  21. ?>


Pamiętaj, że mogą się znaleźć cwaniaki które usuną ciacho przed jego wygaśnięciem lub wyłączą opcję tworzenia ciastek w przeglądarce...

offtopic
Jeszcze się doczepię do kodowania
Cytat
windows-1250

w Polsce się używa ISO-8859-2 lub UTF-8 ale to taki mały szczegół


P.S
1. Pisane z palca, powinno działać smile.gif
2. Mógłbyś dać namiar na tą klasę od mysql'a questionmark.gif
3. oraz linka do twojej strony smile.gif

Pozdrawiam
Rav
maxil
kurde nie działa chyba nie ładuje cookie ;/
nadal można floodować

pokazuje się błąd:

Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\serw\htdocs\pan\file\pozdrowienia.php:9) in C:\Program Files\serw\htdocs\pan\file\pozdrowienia.php on line 76

a 76 linia to:

setcookie('antyflood', true, time()+300); /* ustawiamy ciacho antyflood na true i na 60*5=300 sekund = 5 minut */
rav1989
Cytat(maxil @ 24.12.2008, 12:29:04 ) *
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\serw\htdocs\pan\file\pozdrowienia.php:9) in C:\Program Files\serw\htdocs\pan\file\pozdrowienia.php on line 76



smile.gif przesyłasz już jakieś nagłówki więc stąd ten błąd (pozdrowienia.php:9) linia 9 smile.gif
maxil
a nie da się takiego antyflooda zrobić pod sql?
bo z tymi cookie nie wychodzi;/
rav1989
Cytat(maxil @ 24.12.2008, 14:52:05 ) *
a nie da się takiego antyflooda zrobić pod sql?
bo z tymi cookie nie wychodzi;/


Da się wystarczy, że stworzysz odpowiednią tabelę a w niej kolumny np id|ip|czas
i odpowiednie zapytanie które będzie dodawać oraz sprawdzać czy jest jakaś różnica w czasie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.