login  Naam:   Wachtwoord: 
Registreer je!
 Forum
Zoeken  Regels  Help
Categorieën > PHP & SQL

Shoutbox antispam

Sieebe – 21/05/2010 21:19
Kijk ik heb nu dit:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Shoutbox - beta</title>
  6. </head>
  7.  
  8. <body>
  9. <?php
  10.  
  11. include("connect.php");
  12.  
  13. $Naam = mysql_real_escape_string(strip_tags($_POST['Naam']));
  14. $Bericht = mysql_real_escape_string(strip_tags($_POST['Bericht']));
  15. $IP = $_SERVER['REMOTE_ADDR'];
  16.  
  17.  
  18. if(isset($_POST['Toevoegen'])) {
  19. if(empty($Naam)) {
  20. echo "Geen naam ingevuld!<br />";
  21. }
  22. elseif(empty($Bericht)) {
  23. echo "Geen bericht ingevuld!<br />";
  24. }
  25. elseif(strlen($Naam) > 40) {
  26. echo "Naam us te lang!<br />";
  27. }
  28. elseif(strlen($Bericht) > 125) {
  29. echo "Bericht is te lang!<br />";
  30. }
  31. else {
  32. $date=date('d-m-Y-H-i-s');
  33. $sql1 = "SELECT * FROM shoutbox WHERE IP = '$IP'";
  34. $res1 = mysql_query($sql1) or die(mysql_error());
  35. while(mysql_fetch_array($res1)){
  36. $ip=$res1['IP'];
  37. $datumtijd=$res1['datumtijd'];
  38. }
  39. //arrays met daarin alle tijdsgegevens
  40. $a1=explode("-", $datumtijd);
  41. $a2=explode("-", $date);
  42. //hier kun je tijdsbestek uitkiezen, nu is hij om het uur ingesteld
  43. if(($a1[0]==$a2[0])&&($a1[1]==$a2[1])&&($a1[2]==$a2[2])&&($a1[3]==$a2[3])&&($a1[4]!==$a2[4])&&($a1[4]!==$a2[4])){
  44. $date=date('d-m-Y-H-i-s');
  45. $insert = "INSERT INTO `shoutbox` (IP, Naam, Bericht, datumtijd) VALUES ('$IP', '$Naam', '$Bericht', '$date')";
  46. mysql_query($insert) or die(mysql_error());
  47. echo "Je bericht werd succesvol toegevoegd!<br />";
  48.  
  49. }
  50. }
  51. }
  52.  
  53.  
  54. $query = "SELECT * FROM shoutbox ORDER BY id DESC LIMIT 4";
  55. $shout = mysql_query($query);
  56. while($r = mysql_fetch_array($shout)) {
  57. echo " ".$r['Naam'].": ".$r['Bericht']."<br /> ";
  58. }
  59.  
  60.  
  61.  
  62. ?>
  63. <br />
  64. <form method="POST">
  65. <table border="0">
  66. <tr>
  67. <td><strong>Naam:</strong></td>
  68. <td><input type="text" name="Naam" maxlength="40" /></td>
  69. </tr>
  70.  
  71. <tr>
  72. <td></td>
  73. <td><input type="radio" name="jongen" /> Jongen &nbsp | &nbsp; <input type="radio" name="meisje" /> Meisje</td>
  74. </tr>
  75.  
  76. <tr>
  77. <td><strong>Bericht:</strong></td>
  78. <td><textarea name="Bericht" maxlength="125"></textarea></td>
  79. </tr>
  80.  
  81. <tr>
  82. <td></td>
  83. <td><input type="submit" name="Toevoegen" value="Toevoegen!" /></td>
  84. </tr>
  85. </table>
  86. </form>
  87.  
  88. </body>
  89. </html>



Maar heb geen idee wat er verkeerd aan is het voegd geen bericht toe.
De bedoeling is dus zo dat ze maar om het uur een bericht kunnen plaatsen.

4 antwoorden

Gesponsorde links

Filip – 21/05/2010 21:23
zegeuh.... Dit is nu al de 4de topic dat je aanmaakt met 'anti spam' als naam... Als het dan toch over hetzelfde gaat, gebruik dan je oude topic (heropen die of whatever)..

TotempaaltJ – 21/05/2010 21:26
Ik zou er timestamps van maken, niet datums die je dan explode. Timestamps zijn secondes sinds 1 januari 1970. Hiermee kan je gewoon zoiets doen:
  1. if($timestamp1 > ($timestamp2 + 60 * 60) {


Hier is $timestamp1 de actuele tijd en $timestamp2 de tijd van de laatste post. 60 * 60 is 3600 seconden (je kan ipv 60 * 60 ook gewoon 3600 opschrijven, maar ik vind dit wat duidelijker), en dat is een uur.
Dus, als de actuele tijd groter is dan de tijd van de laatste post + een uur, doe iets (insert).

Sieebe – 21/05/2010 21:40
TotempaaltJ schreef:
Ik zou er timestamps van maken, niet datums die je dan explode. Timestamps zijn secondes sinds 1 januari 1970. Hiermee kan je gewoon zoiets doen:
[..code..]
Hier is $timestamp1 de actuele tijd en $timestamp2 de tijd van de laatste post. 60 * 60 is 3600 seconden (je kan ipv 60 * 60 ook gewoon 3600 opschrijven, maar ik vind dit wat duidelijker), en dat is een uur.
Dus, als de actuele tijd groter is dan de tijd van de laatste post + een uur, doe iets (insert).


Kan je dat eens in het script plaatsen ik snap het niet echt 

TotempaaltJ – 21/05/2010 23:18 (Laatst gewijzigd op 21/05/2010 23:21)
Nee, ik ga het niet voor je doen. Gebruik PHP.net: time en MySQL.com: timestamp of MySQL.com: datetime met de UNIX_TIMESTAMP functie.

Gesponsorde links

Dit onderwerp is gesloten.
Actieve forumberichten:

© 2002-2012 Sitemasters.be - Regels - Gehost door: Vircon - Laadtijd: 0.103s