Se connecter avec
S'enregistrer | Connectez-vous

[PHP] Protection livre d'or contre spam

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

je l'ai fait tout seul comme un grand ! je commence à comprendre quelques bases en php maintenant...
En fait (j'ai pas mon code sous les yeux là) j'ai mis un if juste apres la déclaration des variables et la vérification de leur existence. Donc mon if c'est si le champ de saisie des caracteres de l'image contient les bons caracteres (l'image reste tjs la meme). Si oui, il autorise l'enregistrement des variables dans la bdd, sinon j'ai juste mis un else{} avec rien dedans. C'est pas genant j'espere !
Expert Programmation

Pour le site d'une banque, c'est super important.

Pour celui de dartyduck, il est peut-être peu rentable de modifier les robots pour accéder à son site.

dartyduck> Si tu fais ce site pour apprendre et maîtriser l'art de la conception WEB, oublie juste ce que je viens de dire ;) 

juste comme ça, ça s'appelle un CAPTCHA :) 

D'apres ce que j'ai lu, le plus "simple" et accessible à tous est de mettre des images de chiens et de chats et de demander si c'est un chien ou un chat sur la photo :)  Alors qu'un OCR peut lire une image basée sur des lettres, seul un humain est capable de faire la différence entre ces animaux ! :D 

oh mais c'est pas bete cette histoire ça ! genre dire combien y'a de chiffres paires, ou de lettres dans un mélange de lettres et de chiffres, ou de dire quelle est la couleur du rond dans un mélange de figures géométriques, ou de donner le nom de l'animal sur l'image sans laisser de choix pour éviter les stats...

tellement efficace que personne ne peut écrire ! comprends pas, j'ai mis EXACTEMENT le meme sur ce site http://jeanmarion.free.fr et ca marche nickel.
voici mon code:
  1. <div id="formulaire_guestbook">
  2.  
  3. <?php
  4. if (isset($_POST['pseudo']) AND isset($_POST['message']) AND isset($_POST['antispam'])) // Si les variables existent
  5. {
  6. if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
  7. {
  8. if ($antispam == "6735")
  9. {
  10. // D'abord, on se connecte à MySQL
  11. mysql_connect("localhost", "monsite", "mdp");
  12. mysql_select_db("guestbook");
  13.  
  14. // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
  15. $pseudo = htmlentities ($_POST['pseudo']);
  16. $message = htmlentities ($_POST['message']);
  17. $message = nl2br($message);
  18.  
  19. // Ensuite on enregistre le message
  20. mysql_query("INSERT INTO guestbook VALUES('', '$pseudo', '$message')");
  21.  
  22. // On se déconnecte de MySQL
  23. mysql_close();
  24. }
  25. else {}
  26. }
  27. }
  28. ?>
  29.  
  30. <form action="index.php" method="post">
  31.  
  32. <p>* Votre pseudo :<br /><input type="text" name="pseudo" size="15" /></p>
  33. <p>* Votre message :<br /><textarea name="message" rows="6" cols="30"></textarea></p>
  34. * Recopiez les caractères :<br />
  35. <table width="50%">
  36. <tr>
  37. <td valign="center">
  38. <img src="antispam.jpg" />
  39. </td>
  40. <td valign="center">
  41. <input type="text" name="antispam" size="4" />
  42. </td>
  43. <td valign="center">
  44. <input type="submit" value="Valider" />
  45. </td>
  46. </tr>
  47. </table>
  48. <span class="champ_obligatoire">* = champ obligatoire</span>
  49.  
  50. </form>
  51.  
  52. </div>
  53.  
  54. <?php
  55. // Maintenant on doit récupérer les entrées de la table
  56. // On se connecte d'abord à MySQL :
  57. mysql_connect("localhost", "monsite", "mdp");
  58. mysql_select_db("guestbook");
  59.  
  60. // On utilise la requête suivante pour récupérer les messages :
  61. $recup = mysql_query("SELECT * FROM guestbook ORDER BY ID DESC");
  62.  
  63. // On se déconnecte de MySQL
  64. mysql_close();
  65.  
  66. // Puis on fait une boucle pour afficher tous les résultats :
  67. while ($donnees = mysql_fetch_array($recup) )
  68. {
  69. ?>
  70. <div id="guestbook">
  71. <?php
  72. echo '<p>Message de <span class="pseudo">'. $donnees['pseudo'] .'</span> :</p><p class="message">' . $donnees['message'] .'</p>';
  73. ?>
  74. </div>
  75. <?php
  76. }
  77. // Fin de la boucle
  78. ?>

Au secours!!
Expert Programmation

Et en plus tu sais même pas recopier :D 

C'est $_POST... et non $POST ;) 

Sinon, c'est ça :) 

Mais va vraiment falloir que tu te mettes sérieusement au php ! C'est quand même la base de la base que tu comprends pas là...
Expert Programmation

Parce que l'autre doit reconnaître les variables globales, mais pas celui-là...

En php/mysql, j'ai testé :
  • http://www.amazon.fr/exec/obidos/ASIN/2841773388/sitedu... : très bien pour débuter en php et mysql ; dommage que le code html soit tout pourri...
  • http://www.amazon.fr/PHP-5-avanc%C3%A9-Eric-Daspet/dp/2... : vraiment complet pour se mettre au php 5 orienté objet. Mais un peu délicat pour un débutant. A lire après le précédent ;) 
  • http://www.amazon.fr/MySQL-ladministrateur-d%C3%A9velop... : très complet sur mysql 5. Idem, à lire après le premier de la liste, sous peine de te perdre dans un univers d'incompréhension^^

    alors c'est bon, j'ai ajouté la déclaration de variable $_POST, mais ca ne marchait toujours pas. Puis je suis allé voir ma bdd, et elle comportait 4 champs, alors que je ne sert que de 3 (en gros un champ 'lieu') qui ne servait pas. Je l'ai enlevé et maintenant ca marche.

    Salut et merci pour ce petit script avec tout ce qui va autour, ca m'a permis d'essayer...
    Je n'ai pas encore reussi, mais il ne me manque que la déclaration de variable, j'ai pas trop compris comment déclarer antispam???
    Merci de votre aide, je debute, et j'ai mal au crane...
    Lassé par la pub ? Créez un compte