login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Anti spam shoutbox (Opgelost)

Offline keverineke - 27/05/2010 20:47
Avatar van keverinekeLid Ik heb een shoutbox met een admin pannel die perfect werkt! Enkel heb ik last van spammers. Een captcha vind ik niet echt passen bij een shoutbox daarmee wil ik er een tijdsgrens op zetten, dat je na een post 10 minuten moet wacht of zo iets...

Dit is mijn script:
  1. <?php
  2. // shout.php
  3.  
  4. include ("shout_config.php");
  5. if($_SERVER['REQUEST_METHOD'] == 'POST') {
  6.  
  7. $IP = $_SERVER['REMOTE_ADDR'];
  8. $Naam = mysql_real_escape_string(strip_tags($_POST['Naam']));
  9. $Bericht = mysql_real_escape_string(strip_tags($_POST['Bericht']));
  10.  
  11.  
  12.  
  13. if(empty($Naam)) {
  14. echo "<font face='verdana' size='1' color='#ffffff'><center><b>Je hebt geen naam ingevuld!<br></b></center><p></font>";
  15. }
  16. else
  17. if(empty($Bericht)) {
  18. echo "<font face='verdana' size='1' color='#ffffff'><center><b>Je hebt geen bericht ingevuld!<br></b></center><p></font>";
  19. }
  20. else if(strlen($Bericht) > 100) {
  21. echo "<font face='verdana' size='1' color='#ffffff'><center><b>Je bericht bevat teveel tekens!<br></b></center><p></font>"; }
  22. else {
  23. $Insert = " INSERT INTO `shout` (IP, Naam, Bericht)
  24. VALUES ('".$IP."', '".$Naam."', '".$Bericht."')";
  25. mysql_query($Insert) or die(mysql_error());
  26. }
  27. }
  28.  
  29.  
  30.  
  31.  
  32.  
  33. $Select = "SELECT * FROM `shout` order by id DESC LIMIT 5";
  34. $Query = mysql_query($Select) or die(mysql_error());
  35. while ($rij = mysql_fetch_array($Query)) {
  36.  
  37. echo "<div style='overflow: hidden; position: relative; left: 10px; margin-right: 10px;'><font face='verdana' size='1' color='#ffffff'><div align='left'><b>".$rij['Naam'].":</b></div></font></div><div style='overflow: hidden; position: relative; left: 10px; margin-right: 10px;'><font face='verdana' size='1' color='#ffffff'><div align='left'>".$rij['Bericht']."<hr align='left' width='180'></div></font></div><br> \n";
  38.  
  39. }
  40. echo '<div align="center">
  41. <form method="POST">
  42. <font face="verdana" size="1" color="#ffffff">
  43. <font face="Verdana" size="1"><b>Naam:</b></font><br>
  44. <input size="15" maxlength="20" type="text" name="Naam" />
  45. <br><br>
  46. <font face="Verdana" size="1" color="#ffffff"><b>Bericht:</b></font><br>
  47. <textarea maxlength="30" type="text" name="Bericht" style="height: 50px; width: 120px;"></textarea>
  48. <br><br>
  49. <input type="submit" name="Toevoegen" value="Plaats bericht!" />
  50.  
  51. </font>
  52. </form>
  53. </div>';
  54. ?>


Hoe krijg ik dit voor mekaar?

12 antwoorden

Gesponsorde links
Offline avdg - 27/05/2010 20:49
Avatar van avdg PHP gevorderde Kan je even terugkomen op de chat? Ty 
Bedankt door: keverineke
Offline marten - 27/05/2010 22:39
Avatar van marten Beheerder Als je het bericht van iemand in de database opslaat, sla je ook de tijd op. Kan in de database of in een cookie ofzo. Vervolgens controleer je of de tijd + 10 minuten kleiner is dan de tijd op dit moment. Als dit zo is mag de gebruiker pas weer 'shouten'. Als dit niet zo is krijg je een melding.
Bedankt door: keverineke
Offline keverineke - 28/05/2010 17:42
Avatar van keverineke Lid En hoe krijg ik dat in mijn script?
Offline Jelmerholland - 28/05/2010 21:28
Avatar van Jelmerholland PHP beginner Met je toetsenbord..?

Jij zet alles al in een database, geef 't een extra kolom 'tijd'.. gooi daar een time in, dus een unix timestamp.. tel er 60s voor 1 minuut bij op, dus voor 10 minuten 600s.. kijk als iemand wat wil posten of time(uit database)+600 < time().. zo ja, je kan 'm posten en je werkt dan ook de tijd bij, zo nee.. ze moeten even wachten en je post hoeveel seconden ze nog moeten wachten... tadaah 
Bedankt door: keverineke
Offline kiwi - 28/05/2010 22:05
Avatar van kiwi Nieuw lid Je kan ook met credits werken,

wanneer het een forum is, kan je per post x aantal credits geven, en een post maken vraagt ook x aantal credits, dit werkt ook goed tegen spammers,

en natuurlijk kan je het ook doen zoals hierboven
Bedankt door: keverineke
Offline valles10 - 28/05/2010 22:40
Avatar van valles10 HTML interesse 10 min zou ik niet doen. Das wel al heel lang. Dan is het geen shoutbox meer...
Offline Jelmerholland - 29/05/2010 00:53
Avatar van Jelmerholland PHP beginner valles,
Het gaat even om het principe in dit geval ;)
Bedankt door: keverineke
Offline keverineke - 29/05/2010 11:23
Avatar van keverineke Lid @ kiwi: bedankt, maar voor een shoutbox vind ik dit onnodig.
@ Jelmerhollan: Deze vind ik een goeie oplossing.
Ik kan nog een tabel toevoegen in de database, maar ik weet niet hoe ik dit in mijn script moet plaatsen.
Allicht wel met een toetsenbord zoals je zegt, maar ik heb nog te weinig php kennis om deze ertussen te zwieren!

Wie kan dit fixen, zoals Jelmerhollan voorstelde?
Offline Jelmerholland - 29/05/2010 12:24
Avatar van Jelmerholland PHP beginner Je gaat naar je site url /phpmyadmin

bijv: www.JouwSite.nl/phpmyadmin

Je logt in, gaat naar je tabel en voegt een extra column toe 
Offline keverineke - 29/05/2010 14:15
Avatar van keverineke Lid Ja, dat kan ik.
Maar ik moet toch iets in mijn script ook bijvoegen?
Offline TotempaaltJ - 29/05/2010 16:03
Avatar van TotempaaltJ PHP interesse Heb je het script zelf gemaakt?
Bedankt door: keverineke
Offline keverineke - 30/05/2010 22:18
Avatar van keverineke Lid Dank je voor de hul, ik heb het kunnen oplossen. Ik heb er een tijd op bijgevoegd, en dan laten controleren als ze met dat IP binnen de minut al gepost hebben...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.203s