login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Shoutbox antispam (Opgelost)

Offline Sieebe - 18/05/2010 21:06
Avatar van SieebeNieuw lid Ik zou graag antispam met sessies enig idee hoe je dit aanpakt?

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

7 antwoorden

Gesponsorde links
Offline vinTage - 18/05/2010 21:13
Avatar van vinTage Nieuw lid opgelost ?  
Offline keverineke - 18/05/2010 21:15
Avatar van keverineke Lid Wat opgelost?

Met die link naar het topic zijn we niet geholpen. :S

Ik zou er graag een tijdslimiet op zetten, dat je bv. maar om de minuut één shout kan plaatsen.
Offline vinTage - 18/05/2010 21:25 (laatste wijziging 18/05/2010 21:26)
Avatar van vinTage Nieuw lid Die door mij gegeven link refereert naar een post die exact hetzelfe is als dit topic, dus waarom werd er daar op opgelost geklikt, dat was mn vraag.

En verdiep je maar in sessions of cookies, daarmee kan je bijhouden waneer iemand een bepaalde actie uitvoerde (als je de datum en of geldigheids duur bijhoud).
Je kan ook in de database je tijd bijhouden en het ip, en bij het posten checken of de laatste post (van dat ip) dus langer dan een minuut geleden is..
Offline keverineke - 18/05/2010 21:31
Avatar van keverineke Lid Dat ligt wel aan de moeilijke kant! 
Zo goed ben ik nog niet in php.

Maar kan ik gewoon niet ergens in het script zetten:

if($tijdlimiet<$tijdMin15){echo"Sorry, je mag maar eens per 15min klikken";}

Ofzo iets... ?
Offline jasper56 - 18/05/2010 21:50 (laatste wijziging 18/05/2010 21:51)
Avatar van jasper56 Nieuw lid Zoals vinTage al zij, zal je bij zo iets of met een session moeten werken of een coekie moeten zetten. Het nadeel van een coekie is dat het bij de client ligt en dus niet 100% betrouwbaar is. Een andere optie zij een SESSION zijn.
De laatste manier die vinTage noemt vind ik persoonlijk alleen niks, wat nou als meerdere mensen op een IP zitten? bijv. bij een school, vereniging etc.

een voorbeeldje van hoe het kan met een cookie:
  1. //als je de shout heb opeslagen in DB, zet je het cookie:
  2. $value = "test";
  3. setcookie("TestCookie", $value, time()+60); //cookie verloopt automatisch over 60 sec.


en nu controleer je of het cookie bestaat, als deze bestaat mag die gene dus niks posten:
  1. if(isset($_COOKIE['TestCookie']) && $_COOKIE['testCookie'] == "test"){
  2. echo "Je bent te snel";
  3. }
  4. else{
  5. //sla het bericht op
  6. }


Hoop dat je er wat aan hebt.
Offline keverineke - 20/05/2010 19:22
Avatar van keverineke Lid Dit is dan volgens jou de beste manier, om spam via bots te vermeiden?
Offline jasper56 - 21/05/2010 10:01
Avatar van jasper56 Nieuw lid nee, ik zeg niet dat dit DE beste manier is. Dit zou alleen een simpele oplossing KUNNEN zijn.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.203s