Se connecter / S'enregistrer
Votre question

[PHP] Spam sur livre d'or [RESOLU]

Tags :
  • Spam
  • Programmation
Dernière réponse : dans Programmation
25 Août 2007 00:30:07

Bonsoir, avant toute chose je tien à vous dire que je n'ai pas encore de spam sur mon livre d'or mais qu'il vaut mieux prévenir que guérir, donc j'ai déjà entendu parlé du system Captcha, mais bon impossible de l'installer -_-, même en local ...

Je vous donne la page PHP de mon livre d'or :

  1. <div id="corps2">
  2. <form method="post" action="livreor.php">
  3. <p align="center"><strong>Signez mon guestbook :-) !</strong></p>
  4.  
  5. <p align="center">
  6. Pseudo : <input name="pseudo" type="text" />
  7. <br />
  8. Message :<br />
  9. <textarea name="message" rows="8" cols="35"></textarea>
  10. <br />
  11. <input type="submit" value="Envoyer" />
  12. </p>
  13. </form>
  14. <p class="pages">
  15. <?php
  16. mysql_connect("mysql5-2", "*********", "*********");
  17. mysql_select_db("************");
  18.  
  19. // --------------- Etape 1 -----------------
  20. // Si un message est envoyé, on l'enregistre
  21. // -----------------------------------------
  22.  
  23. if (isset($_POST['pseudo']) AND isset($_POST['message']))
  24. {
  25.  
  26. $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
  27.  
  28. $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
  29. $message = nl2br($message);
  30.  
  31. mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
  32. }
  33.  
  34. // --------------- Etape 2 -----------------
  35. // On écrit les liens vers chacune des pages
  36. // -----------------------------------------
  37.  
  38.  
  39. $nombreDeMessagesParPage = 4;
  40.  
  41. $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
  42. $donnees = mysql_fetch_array($retour);
  43. $totalDesMessages = $donnees['nb_messages'];
  44.  
  45. $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
  46.  
  47. echo 'Page : ';
  48. for ($i = 1 ; $i <= $nombreDePages ; $i++)
  49. {
  50. echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
  51. }
  52. ?>
  53. </p>
  54. <?php
  55.  
  56. // --------------- Etape 3 ---------------
  57. // Maintenant, on va afficher les messages
  58. // ---------------------------------------
  59.  
  60. if (isset($_GET['page']))
  61. {
  62. $page = $_GET['page'];
  63. }
  64. else
  65. {
  66. $page = 1;
  67. }
  68.  
  69. $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
  70. $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
  71. while ($donnees = mysql_fetch_array($reponse))
  72. {
  73. echo '<p align=center><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . stripslashes($donnees['message']) . '</p>';
  74. }
  75. mysql_close();
  76. ?>
  77. </div>
  78. <div id="footer">
  79. <TABLE style="top:0px" align="center" width=100% height=100%><TR align="center"><TH align="center">
  80. <?
  81. include("connect.inc.php");
  82. ?>
  83. </TH></TR></TABLE>
  84. </div>
  85. </body>
  86. </html>


Doonc voilà mon code, mais je voudrai intégrer un genre de cryptogramme visuel pour bloquer les robots, mais je ne sais pas comment faire :-/.

Merci d'avance pour votre aide.

Autres pages sur : php spam livre resolu

a c 232 L Programmation
25 Août 2007 00:55:30

Et qu'est ce qui bloque avec Captcha ?
Contenus similaires
25 Août 2007 01:05:24

OmaR a dit :
Et qu'est ce qui bloque avec Captcha ?


Bon Captcha, c'est un anti spam "lourd" on vas dire et je ne sais pas pourquoi mais en local j'ai une erreur disant qu'il y a un problème ligne 33, donc j'ai regarder et tout paraîssé normal et j'ai pas cherché plus loin non plus :-/.

Et merci à allstar27, je redis si ça fonctionne
25 Août 2007 02:05:34

(Je fais un autre post, comme ça, ça fait un up en même temps)

Donc merci à toi allstar pour ton lien =), je suis arriver à mettre en place le crypto mais par contre ca va pas :-), je peux rentrer n'importe quel code et ça post quand même, il y a une erreur (ça c'est sur, mais ou ?). Si vous voulez, vous pouvez flooder autant que vous voulez pour tester -> http://www.og-matadores.fr/test/livreor.php
Vous verez que ça ne fonctionne pas, donc je vous donne mes code si vous voulez bien le regarder :-)

livreor.php
  1. <div id="corps2">
  2. <form method="post" action="livreor.php">
  3. <p align="center"><strong>Signez mon guestbook :-) !</strong></p>
  4.  
  5. <p align="center">
  6. Pseudo : <input name="pseudo" type="text" />
  7. <br />
  8. Message :<br />
  9. <textarea name="message" rows="8" cols="35"></textarea>
  10. // ---------- Code pour le Cryptogramme Visuel
  11. //--------------------------------------------
  12. <form action="verifier.php" method="post">
  13. <table align="center">
  14. <tr><td><?php dsp_crypt(0,1); ?></td></tr>
  15. <tr><td>Recopier le code:<input type="text" name="code"></td></tr>
  16. <tr><td><input type="submit" name="submit" value="Envoyer"></td></tr>
  17. </table>
  18. </form>
  19. //--------------------------------------------
  20. //--------------------------------------------
  21. <br />
  22. <input type="submit" value="Envoyer" />
  23. </p>
  24. </form>
  25. <p class="pages">
  26. <?php
  27. mysql_connect("mysql5-2", "*********", "*********");
  28. mysql_select_db("************");
  29.  
  30. // --------------- Etape 1 -----------------
  31. // Si un message est envoyé, on l'enregistre
  32. // -----------------------------------------
  33.  
  34. if (isset($_POST['pseudo']) AND isset($_POST['message']))
  35. {
  36.  
  37. $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
  38.  
  39. $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
  40. $message = nl2br($message);
  41.  
  42. mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
  43. }
  44.  
  45. // --------------- Etape 2 -----------------
  46. // On écrit les liens vers chacune des pages
  47. // -----------------------------------------
  48.  
  49.  
  50. $nombreDeMessagesParPage = 4;
  51.  
  52. $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
  53. $donnees = mysql_fetch_array($retour);
  54. $totalDesMessages = $donnees['nb_messages'];
  55.  
  56. $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
  57.  
  58. echo 'Page : ';
  59. for ($i = 1 ; $i <= $nombreDePages ; $i++)
  60. {
  61. echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
  62. }
  63. ?>
  64. </p>
  65. <?php
  66.  
  67. // --------------- Etape 3 ---------------
  68. // Maintenant, on va afficher les messages
  69. // ---------------------------------------
  70.  
  71. if (isset($_GET['page']))
  72. {
  73. $page = $_GET['page'];
  74. }
  75. else
  76. {
  77. $page = 1;
  78. }
  79.  
  80. $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
  81. $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
  82. while ($donnees = mysql_fetch_array($reponse))
  83. {
  84. echo '<p align=center><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . stripslashes($donnees['message']) . '</p>';
  85. }
  86. mysql_close();
  87. ?>
  88. </div>
  89. <div id="footer">
  90. <TABLE style="top:0px" align="center" width=100% height=100%><TR align="center"><TH align="center">
  91. <?
  92. include("connect.inc.php");
  93. ?>
  94. </TH></TR></TABLE>
  95. </div>
  96. </body>
  97. </html>


verifier.php
  1. <?php
  2. $cryptinstall="./cryptographp.fct.php";
  3. include $cryptinstall;
  4. ?>
  5.  
  6.  
  7. <html>
  8. <?php
  9. if (chk_crypt($_POST['code']))
  10. echo "<a><font color='#009700'>=> C'est le bon code :-)</font></a>" ;
  11. else echo "<a><font color='#FF0000'>=> Erreur, le code est incorrect</font></a>" ;
  12. ?>
  13. </html>


j'ai tenter plusieur chose mais sans succés :-/, avez-vous une idée ?
25 Août 2007 02:10:18

Apparement il prend pas en compte se qu'il y a dans l'input donc vérifier le name là <tr><td>Recopier le code:<input type="text" name="code"></td></tr>
25 Août 2007 02:14:38

Normalement c'est bon ici car
  1. <tr><td>Recopier le code:<input type="text" name="code"></td></tr>


et il y a aussi le même dans mon fichier verifier.php
  1. if (chk_crypt($_POST['code']))


Donc j'ai vraiment du mal à comprendre là :-/

25 Août 2007 02:16:15

Et dans le fichier criptographp.ftc.php?

J'ai une question pourquoi ton contenu n'est pas a la meme hauteur que ton menu?
25 Août 2007 02:20:36

Dans mon fichier criptographp.ftc j'ai ça :
  1. if(session_id() == "xt") session_start();
  2.  
  3. $_SESSION['cryptdir']= dirname($cryptinstall);
  4.  
  5.  
  6. function dsp_crypt($cfg=0,$reload=1) {
  7. // Affiche le cryptogramme
  8. echo "<table align=center><tr><td><img id='cryptogram' src='".$_SESSION['cryptdir']."/cryptographp.php?cfg=".$cfg."&".SID."'></td>";
  9. if ($reload) echo "<td><a title='".($reload==1?'':$reload)."' style=\"cursor:pointer\" onclick=\"javascript:document.images.cryptogram.src='".$_SESSION['cryptdir']."/cryptographp.php?cfg=".$cfg."&".SID."&'+Math.round(Math.random(0)*1000)+1\"><img src=\"".$_SESSION['cryptdir']."/images/reload.png\"></a></td>";
  10. echo "</tr></table>";
  11. }
  12.  
  13.  
  14. function chk_crypt($code) {
  15. // Vérifie si le code est correct
  16. include ($_SESSION['configfile']);
  17. $code = addslashes ($code);
  18. $code = str_replace(' ','',$code); // supprime les espaces saisis par erreur.
  19. $code = ($difuplow?$code:strtoupper($code));
  20. switch (strtoupper($cryptsecure)) {
  21. case "MD5" : $code = md5($code); break;
  22. case "SHA1" : $code = sha1($code); break;
  23. }
  24. if ($_SESSION['cryptcode'] and ($_SESSION['cryptcode'] == $code))
  25. {
  26. unset($_SESSION['cryptreload']);
  27. if ($cryptoneuse) unset($_SESSION['cryptcode']);
  28. return true;
  29. }
  30. else {
  31. $_SESSION['cryptreload']= true;
  32. return false;
  33. }
  34. }
  35.  
  36. ?>


Donc j'ai rien vu d'anormal O.o

Sinon pour le contenu je test encore tout ça :], mon site n'est pas encore fini mais je préfére sécurisé mon guestbook en priorité contre les robots :-)
25 Août 2007 02:25:42

  1. <?php
  2. $cryptinstall="./crypt/cryptographp.fct.php";
  3. include $cryptinstall;
  4. ?>


Tu dois le placer au tout début de ta page avant toute les balises...

  1. <?php dsp_crypt(0,1); ?>


Ex:

  1. <table>
  2. <tr><td><?php dsp_crypt(0,1); ?></td></tr>
  3. <tr><td>Recopier le code:<input type="text" name="code"></td></tr>
  4. <tr><td><input type="submit" name="submit" value="Envoyer"></td></tr>
  5. </table>
  6. </form>
25 Août 2007 02:29:35

C'est fait :-/, c'est ça le problème, voilà ma page en entier

  1. <?php
  2. $cryptinstall="./crypt/cryptographp.fct.php";
  3. include $cryptinstall;
  4. ?>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" rel="nofollow" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>">
  6. <html xmlns="<a href="http://www.w3.org/1999/xhtml" rel="nofollow" target="_blank">http://www.w3.org/1999/xhtml</a>" xml:lang="fr" >
  7. <head>
  8. <title>Xtr4d3's | Livre d'or</title>
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  10. <meta name="description" content="Vous trouveres ici tous mes skins pour oGame">
  11. <meta name="keywords" lang="fr" content="og,xtr4d3,skin,skins,ogame,skin ogame">
  12. <meta http-equiv="Content-Language" content="fr">
  13. <meta name="reply-to" content="rythmictrip@gmail.com">
  14. <meta name="category" content="Jeux">
  15. <meta name="robots" content="index">
  16. <meta name="distribution" content="global">
  17. <meta name="revisit-after" content="7 days">
  18. <meta name="author" lang="fr" content="Xtr4d3">
  19. <meta name="copyright" content="Xtr4d3">
  20. <meta name="generator" content="Adobe Photoshop CS2,Dreamweaver 8">
  21. <meta name="identifier-url" content="<a href="http://www.og-matadores.fr/ztr4d3/index.php" rel="nofollow" target="_blank">http://www.og-matadores.fr/ztr4d3/index.php</a>">
  22. <meta name="expires" content="never">
  23. <meta name="Date-Creation-yyyymmdd" content="Mercredi 15 Aout 2007">
  24. <meta name="Date-Revision-yyyymmdd" content="Jeudi 16 Aout 2007">
  25. <link rel="stylesheet" media="screen" type="text/css" title="Design" href="designguest.css" />
  26. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  27. <style type="text/css">
  28. form, .pages
  29. {
  30. text-align:center;
  31. }
  32. </style>
  33. </head>
  34.  
  35. <body>
  36. <div id="header">
  37. </div>
  38.  
  39. <div id="menu">
  40. <div class="element_menu">
  41.  
  42. <h2><a href="index.php"><img align="left" src="img/menu/accueil.png" vspace="20px" alt="Accueil" title="Accueil" /></a></h2>
  43. <h3><img align="left" src="img/menu/skins.png" alt="Skins" vspace="5px" title="Skins" /></h3>
  44. <h2><a href="elegance.php"><img align="left" src="img/menu/elegance.png" alt="Elegance Skin" title="Elegance Skin" /></a></h2>
  45. <h2><a href="chimik.php"><img align="left" src="img/menu/chimik.png" alt="Chimik Skin" title="Chimik Skin" /></a></h2>
  46. <h2><a href="db_blue.php"><img align="left" src="img/menu/db_blue.png" alt="db_bleu Skin" title="db_bleu Skin" /></a></h2>
  47.  
  48. <h3><img align="left" src="img/menu/divers.png" alt="divers" vspace="5px" title="divers" /></h3>
  49. <h2><a href="maj.php"><img align="left" src="img/menu/maj.png" alt="maj" title="maj" /></a></h2>
  50. <h2><a href="contact.php"><img align="left" src="img/menu/contact.png" alt="contact" title="contact" /></a></h2>
  51. <h2><a href="livreor.php"><img align="left" src="img/menu/guest.png" alt="GuestBook" title="GuestBook" /></a></h2>
  52. </div>
  53. </div>
  54.  
  55. <div id="corps2">
  56. <form method="post" action="livreor.php">
  57. <p align="center"><strong>Signez mon guestbook :-) !</strong></p>
  58.  
  59. <p align="center">
  60. Pseudo : <input name="pseudo" type="text" />
  61. <br />
  62. Message :<br />
  63. <textarea name="message" rows="8" cols="35"></textarea>
  64. <form action="verifier.php" method="post">
  65. <table align="center">
  66. <tr><td><?php dsp_crypt(0,1); ?></td></tr>
  67. <tr><td>Recopier le code:<input type="text" name="code"></td></tr>
  68. <tr><td><input type="submit" name="submit" value="Envoyer"></td></tr>
  69. </table>
  70. </form>
  71.  
  72. </form>
  73. <p class="pages">
  74. <?php
  75. mysql_connect("mysql5-2", "***", "****");
  76. mysql_select_db("*****");
  77.  
  78. // --------------- Etape 1 -----------------
  79. // Si un message est envoyé, on l'enregistre
  80. // -----------------------------------------
  81.  
  82. if (isset($_POST['pseudo']) AND isset($_POST['message']))
  83. {
  84.  
  85. $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
  86.  
  87. $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
  88. $message = nl2br($message);
  89.  
  90.  
  91. mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
  92. }
  93.  
  94. // --------------- Etape 2 -----------------
  95. // On écrit les liens vers chacune des pages
  96. // -----------------------------------------
  97.  
  98. $nombreDeMessagesParPage = 4;
  99.  
  100. $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
  101. $donnees = mysql_fetch_array($retour);
  102. $totalDesMessages = $donnees['nb_messages'];
  103.  
  104. $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
  105.  
  106. echo 'Page : ';
  107. for ($i = 1 ; $i <= $nombreDePages ; $i++)
  108. {
  109. echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
  110. }
  111. ?>
  112. </p>
  113. <?php
  114.  
  115. // --------------- Etape 3 ---------------
  116. // Maintenant, on va afficher les messages
  117. // ---------------------------------------
  118. if (isset($_GET['page']))
  119. {
  120. $page = $_GET['page'];
  121. }
  122. else
  123. {
  124. $page = 1;
  125. }
  126.  
  127. $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
  128. $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
  129. while ($donnees = mysql_fetch_array($reponse))
  130. {
  131. echo '<p align=center><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . stripslashes($donnees['message']) . '</p>';
  132. }
  133. mysql_close();
  134. ?>
  135. </div>
  136. <div id="footer">
  137. <TABLE style="top:0px" align="center" width=100% height=100%><TR align="center"><TH align="center">
  138. <?
  139. include("connect.inc.php");
  140. ?>
  141. </TH></TR></TABLE>
  142. </div>
  143. </body>
  144. </html>


La voilà en entier, et si il n'y aurait pas eu ce code j'aurai eu des message d'erreur via mysql.

Bon je verai ça demain, car la j'en ai mal à la tête. Merci beaucoup de ton aide allstar
25 Août 2007 02:32:29

De rien meme si je t'ai pas beaucoup aider. Mais tu as bien pris la dernière version? (1.4)
25 Août 2007 02:34:20

Oui c'est bien la dernière version (1.4), j'ai tout fais à partir de la doc, mais ça fonctionne pas, je suis aller dans support, et cette "chose" là été déjà arriver et il demandait de vérifier justement le name=code, mais sans succés chez moi :-/. A demain, bonne nuit
25 Août 2007 11:25:08

Plus personne ? :-(
25 Août 2007 23:48:34

Problème résolu, j'ai mis un nouveau guestbook, bien plus performant grâce à un accé admin :-), merci quand même
26 Août 2007 00:10:23

Salut,

Je vois que ton problème est résolue, mais je me permets de te conseiller un anti-spam que j'utilise et avec lequel je n'ai encore pas eu de problème, à cette adresse :
http://www.webmaster-hub.com/index.php?showtopic=29494&st=20
Il peut toujours servir en plus de ton admin, ou pour tout autre script de ce genre (livre d'or, forum, etc..).

Bonne nuit.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS