Tom's Guide > Forum > Programmation > [PHP] Spam sur livre d'or [RESOLU]

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

Forum Programmation : [PHP] Spam sur livre d'or [RESOLU]

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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 :

Code :
  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. // --------------- Etape 1 -----------------
  19. // Si un message est envoyé, on l'enregistre
  20. // -----------------------------------------
  21. if (isset($_POST['pseudo']) AND isset($_POST['message']))
  22. {
  23.  
  24.     $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
  25.      
  26.     $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
  27.     $message = nl2br($message);
  28.  
  29.     mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')" );
  30. }
  31. // --------------- Etape 2 -----------------
  32. // On écrit les liens vers chacune des pages
  33. // -----------------------------------------
  34. $nombreDeMessagesParPage = 4;
  35. $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
  36. $donnees = mysql_fetch_array($retour);
  37. $totalDesMessages = $donnees['nb_messages'];
  38. $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
  39. echo 'Page : ';
  40. for ($i = 1 ; $i <= $nombreDePages ; $i++)
  41. {
  42.     echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
  43. }
  44. ?>
  45. </p>
  46. <?php
  47. // --------------- Etape 3 ---------------
  48. // Maintenant, on va afficher les messages
  49. // ---------------------------------------
  50. if (isset($_GET['page']))
  51. {
  52.     $page = $_GET['page'];
  53. }
  54. else
  55. {
  56.     $page = 1;
  57. }
  58. $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
  59. $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
  60. while ($donnees = mysql_fetch_array($reponse))
  61. {
  62.     echo '<p align=center><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . stripslashes($donnees['message']) . '</p>';
  63. }
  64. mysql_close();
  65. ?>
  66. </div>
  67. <div id="footer">
  68. <TABLE style="top:0px" align="center" width=100% height=100%><TR align="center"><TH align="center">
  69. <?
  70. include("connect.inc.php" );
  71. ?>
  72. </TH></TR></TABLE>
  73. </div>
  74. </body>
  75. </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.


Message édité par LoPe_ le 25-08-2007 à 23:48:55
------------------------------ Google est votre ami.

 

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Et qu'est ce qui bloque avec Captcha ?

------------------------------ Les dessins des seins ou les desseins des saints ?
Répondre à OmaR

OmaR a écrit :

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

------------------------------ Google est votre ami.

 

Répondre à LoPe_

(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

Code :
  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. // --------------- Etape 1 -----------------
  30. // Si un message est envoyé, on l'enregistre
  31. // -----------------------------------------
  32. if (isset($_POST['pseudo']) AND isset($_POST['message']))
  33. {
  34.  
  35.     $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
  36.      
  37.     $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
  38.     $message = nl2br($message);
  39.  
  40.     mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')" );
  41. }
  42. // --------------- Etape 2 -----------------
  43. // On écrit les liens vers chacune des pages
  44. // -----------------------------------------
  45. $nombreDeMessagesParPage = 4;
  46. $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
  47. $donnees = mysql_fetch_array($retour);
  48. $totalDesMessages = $donnees['nb_messages'];
  49. $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
  50. echo 'Page : ';
  51. for ($i = 1 ; $i <= $nombreDePages ; $i++)
  52. {
  53.     echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
  54. }
  55. ?>
  56. </p>
  57. <?php
  58. // --------------- Etape 3 ---------------
  59. // Maintenant, on va afficher les messages
  60. // ---------------------------------------
  61. if (isset($_GET['page']))
  62. {
  63.     $page = $_GET['page'];
  64. }
  65. else
  66. {
  67.     $page = 1;
  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>
 

verifier.php

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

j'ai tenter plusieur chose mais sans succés :-/, avez-vous une idée ?


Message édité par LoPe_ le 25-08-2007 à 02:06:09
------------------------------ Google est votre ami.

 

Répondre à LoPe_

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>

------------------------------ Rémunère ton site
Hosting Favicon
Clic pas ici
Répondre à Allstar27

Normalement c'est bon ici car

Code :
  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

Code :
  1. if (chk_crypt($_POST['code']))
 

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

 


Message édité par LoPe_ le 25-08-2007 à 02:14:55
------------------------------ Google est votre ami.

 

Répondre à LoPe_

Et dans le fichier criptographp.ftc.php?

J'ai une question pourquoi ton contenu n'est pas a la meme hauteur que ton menu?

------------------------------ Rémunère ton site
Hosting Favicon
Clic pas ici
Répondre à Allstar27

Dans mon fichier criptographp.ftc j'ai ça :

Code :
  1. if(session_id() == "xt" ) session_start();
  2. $_SESSION['cryptdir']= dirname($cryptinstall);
  3. function dsp_crypt($cfg=0,$reload=1) {
  4. // Affiche le cryptogramme
  5. echo "<table align=center><tr><td><img id='cryptogram' src='".$_SESSION['cryptdir']."/cryptographp.php?cfg=".$cfg."&".SID."'></td>";
  6. 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>";
  7. echo "</tr></table>";
  8. }
  9. function chk_crypt($code) {
  10. // Vérifie si le code est correct
  11. include ($_SESSION['configfile']);
  12. $code = addslashes ($code);
  13. $code = str_replace(' ','',$code);  // supprime les espaces saisis par erreur.
  14. $code = ($difuplow?$code:strtoupper($code));
  15. switch (strtoupper($cryptsecure)) {   
  16.         case "MD5"  : $code = md5($code); break;
  17.         case "SHA1" : $code = sha1($code); break;
  18.         }
  19. if ($_SESSION['cryptcode'] and ($_SESSION['cryptcode'] == $code))
  20.     {
  21.     unset($_SESSION['cryptreload']);
  22.     if ($cryptoneuse) unset($_SESSION['cryptcode']);   
  23.     return true;
  24.     }
  25.     else {
  26.         $_SESSION['cryptreload']= true;
  27.         return false;
  28.         }
  29. }
  30. ?>



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 :-)

------------------------------ Google est votre ami.

 

Répondre à LoPe_

Code :
  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...

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



Ex:

Code :
  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>


Message édité par Allstar27 le 25-08-2007 à 02:29:32
------------------------------ Rémunère ton site
Hosting Favicon
Clic pas ici
Répondre à Allstar27

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

Code :
  1. <?php
  2. $cryptinstall="./crypt/cryptographp.fct.php";
  3. include $cryptinstall; 
  4. ?>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml" 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="http://www.og-matadores.fr/ztr4d3/index.php">
  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. <div id="menu">
  39.     <div class="element_menu">
  40.                 <h2><a href="index.php"><img align="left" src="img/menu/accueil.png" vspace="20px" alt="Accueil" title="Accueil" /></a></h2>
  41.          <h3><img align="left" src="img/menu/skins.png" alt="Skins" vspace="5px" title="Skins" /></h3>
  42.                 <h2><a href="elegance.php"><img align="left" src="img/menu/elegance.png" alt="Elegance Skin" title="Elegance Skin" /></a></h2>
  43.                 <h2><a href="chimik.php"><img align="left" src="img/menu/chimik.png" alt="Chimik Skin" title="Chimik Skin" /></a></h2>
  44.                 <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>
  45.      
  46.          <h3><img align="left" src="img/menu/divers.png" alt="divers" vspace="5px" title="divers" /></h3>
  47.                 <h2><a href="maj.php"><img align="left" src="img/menu/maj.png" alt="maj" title="maj" /></a></h2>
  48.                 <h2><a href="contact.php"><img align="left" src="img/menu/contact.png" alt="contact" title="contact" /></a></h2>
  49.                 <h2><a href="livreor.php"><img align="left" src="img/menu/guest.png" alt="GuestBook" title="GuestBook" /></a></h2>
  50.   </div>                 
  51. </div>
  52. <div id="corps2">
  53.     <form method="post" action="livreor.php">
  54.     <p align="center"><strong>Signez mon guestbook :-) !</strong></p>
  55.  
  56.     <p align="center">
  57.         Pseudo : <input name="pseudo" type="text" />
  58.         <br />
  59.         Message :<br />
  60.         <textarea name="message" rows="8" cols="35"></textarea>
  61. <form action="verifier.php" method="post">
  62. <table align="center">
  63.   <tr><td><?php dsp_crypt(0,1); ?></td></tr>
  64.   <tr><td>Recopier le code:<input type="text" name="code"></td></tr>
  65.   <tr><td><input type="submit" name="submit" value="Envoyer"></td></tr>
  66. </table>
  67. </form>
  68.    
  69.     </form>
  70. <p class="pages">
  71. <?php
  72. mysql_connect("mysql5-2", "***", "****" );
  73. mysql_select_db("*****" );
  74. // --------------- Etape 1 -----------------
  75. // Si un message est envoyé, on l'enregistre
  76. // -----------------------------------------
  77. if (isset($_POST['pseudo']) AND isset($_POST['message']))
  78. {
  79.  
  80.     $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
  81.      
  82.     $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
  83.     $message = nl2br($message);
  84.  
  85.    
  86.     mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')" );
  87. }
  88. // --------------- Etape 2 -----------------
  89. // On écrit les liens vers chacune des pages
  90. // -----------------------------------------
  91. $nombreDeMessagesParPage = 4;
  92. $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
  93. $donnees = mysql_fetch_array($retour);
  94. $totalDesMessages = $donnees['nb_messages'];
  95. $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
  96. echo 'Page : ';
  97. for ($i = 1 ; $i <= $nombreDePages ; $i++)
  98. {
  99.     echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
  100. }
  101. ?>
  102. </p>
  103. <?php
  104. // --------------- Etape 3 ---------------
  105. // Maintenant, on va afficher les messages
  106. // ---------------------------------------
  107. if (isset($_GET['page']))
  108. {
  109.     $page = $_GET['page'];
  110. }
  111. else
  112. {
  113.     $page = 1;
  114. }
  115. $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
  116. $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
  117. while ($donnees = mysql_fetch_array($reponse))
  118. {
  119.     echo '<p align=center><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . stripslashes($donnees['message']) . '</p>';
  120. }
  121. mysql_close();
  122. ?>
  123. </div>
  124. <div id="footer">
  125. <TABLE style="top:0px" align="center" width=100% height=100%><TR align="center"><TH align="center">
  126. <?
  127. include("connect.inc.php" );
  128. ?>
  129. </TH></TR></TABLE>
  130. </div>
  131. </body>
  132. </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

------------------------------ Google est votre ami.

 

Répondre à LoPe_

De rien meme si je t'ai pas beaucoup aider. Mais tu as bien pris la dernière version? (1.4)

------------------------------ Rémunère ton site
Hosting Favicon
Clic pas ici
Répondre à Allstar27

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


Message édité par LoPe_ le 25-08-2007 à 02:34:43
------------------------------ Google est votre ami.

 

Répondre à LoPe_

Plus personne ? :-(

------------------------------ Google est votre ami.

 

Répondre à LoPe_

Problème résolu, j'ai mis un nouveau guestbook, bien plus performant grâce à un accé admin :-), merci quand même

------------------------------ Google est votre ami.

 

Répondre à LoPe_

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 [...] 9494&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.

------------------------------ Clicky
Répondre à Clicky
Tom's Guide > Forum > Programmation > [PHP] Spam sur livre d'or [RESOLU]
Aller à :

Il y a 2036 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens