Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> AntyFlood POMOCY
maxil
post
Post #1





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

Ostrzeżenie: (10%)
X----


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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/party.gif) ale jeśli to jakiś problem to proszę chociarz do jakieś wskazówki ale nie typu 'szukanie nie boli' czy coś takiego (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Z góry dziękuje za pomoc (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
maxil
post
Post #3





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

Ostrzeżenie: (10%)
X----


a mógłbym prosić o objaśnienie jak zrobić to ciasteczko?
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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

Ten post edytował wookieb 23.12.2008, 14:54:52
Go to the top of the page
+Quote Post
maxil
post
Post #5





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

Ostrzeżenie: (10%)
X----


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 (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)
wiem że lecę na łatwiznę ale cóż
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Oczywiście... że nie.
Skoro nie kumasz manuala to jazda google i kursy php.
Go to the top of the page
+Quote Post
rav1989
post
Post #7





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 5.07.2007

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


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ć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
2. Mógłbyś dać namiar na tą klasę od mysql'a (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
3. oraz linka do twojej strony (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam
Rav

Ten post edytował rav1989 24.12.2008, 03:36:39
Go to the top of the page
+Quote Post
maxil
post
Post #8





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

Ostrzeżenie: (10%)
X----


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 */


Ten post edytował maxil 24.12.2008, 12:33:51
Go to the top of the page
+Quote Post
rav1989
post
Post #9





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 5.07.2007

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


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



(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) przesyłasz już jakieś nagłówki więc stąd ten błąd (pozdrowienia.php:9) linia 9 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
maxil
post
Post #10





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

Ostrzeżenie: (10%)
X----


a nie da się takiego antyflooda zrobić pod sql?
bo z tymi cookie nie wychodzi;/
Go to the top of the page
+Quote Post
rav1989
post
Post #11





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 5.07.2007

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


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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.12.2025 - 17:35