login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Shoutbox antispam

Offline Sieebe - 21/05/2010 21:19
Avatar van SieebeNieuw lid 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
Offline Filip - 21/05/2010 21:23
Avatar van Filip IRC guru 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)..
Offline TotempaaltJ - 21/05/2010 21:26
Avatar van TotempaaltJ PHP interesse 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).
Offline Sieebe - 21/05/2010 21:40
Avatar van Sieebe Nieuw lid
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 
Offline TotempaaltJ - 21/05/2010 23:18 (laatste wijziging 21/05/2010 23:21)
Avatar van TotempaaltJ PHP interesse 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-2024 Sitemasters.be - Regels - Laadtijd: 0.209s