Version complète: sur le forum Webmaster Hub : Script de code aléatoire par image
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Scripts et utilitaires
zave
Bonjour à tous smile.gif

J'ai mis en place sur mon site, un formulaire de contact via la fonction mail(), le script fonctionne très bien là pas de problème, par contre, je commence à recevoir du spam du genre, acheter 10 cartons de viagra.

Je pense que ces mails sont l'oeuvre de robots spammeur, je voudrais donc mettre en place un script ou un code apparait sous forme d'image et celui qui veut m'écrire doit mettre le bon code, pour que le mail puisse partir.

J'ai cherché un peu, mais vu que déjà je ne connais pas le nom de ce genre de script, je suis mal barré biggrin.gif

Si vous en connaissez un sympa, facile à mettre en place, je vous en remercie d'avance biggrin.gif
AllForEver
Il faut chercher du coté de CAPTCHA - http://fr.wikipedia.org/wiki/Captcha wink.gif

J'ai testé celui-ci, il me semble pas mal : http://viebrock.ca/code/10/turing-protection
zave
Bonjour à tous smile.gif

Merci pour votre aide à tous les deux

CITATION(Gilbert @ mercredi 12 avril 2006, 11h44)
Bonjour

il y a aussi un petit tutorial ici
http://www.webmaster-hub.com/publication/article51.html
*


Bon j'ai essayé de mettre en place ce script sur mon formulaire, dans l'ensemble ça fonctionne, mais bon, je pense qu'il y a un problème quand même, tout d'abord, voici le résultat final

Le formulaire


Les chiffres ne ressemble pas du tout à ceux que j'ai mis dans le répertoire image

Lorsque l'on regarde la source de la page, on s'aperçoit que l'on retrouve le code à trouver, dans la balise image.

CODE
<img src="gencode.php?code=13234"><br /><br />


Pour le problème d'apprence des chiffres qui n'est pas très grave, je pense que le fait que le code apparaisse dans la source l'est plus, je dispose sur mon hébergement de la librairie GD.

Voici une partie de la source de formulaire, car j'ai peut être fait une erreur en l'adaptant à ma page, je mettrai que la partie concerné

Partie formulaire

CODE
<label class="label2">Placez le code de l'image ci-dessous<br />
<input name="verifCode" type="text" class="input0" id="verifCode" maxlength="5"> <br />
</label>
<input type="hidden" name="verifCode2" value=<? echo $code; ?>><br />
<img src="gencode.php?code=<? echo $code; ?>"><br /><br />
<input type="submit" class="bouton" value="Envoyer" tabindex="60" />
<input type="reset" class="bouton" value="Effacer" tabindex="70" />
</form>
</div>
</div>
<?php
if(isset($_POST['pseudo'])&& $_POST['comment']){
$verifcode2=$_POST['verifCode2'];
$verifcode = $_POST['verifCode'];
if($verifcode==$verifcode2){
$pseudo=$_POST['pseudo'];


partie gencode.php

CODE
<?php
header ("Content-type: image/jpeg");

// Ici on choisit la hauteur par ex 80*20
$im = imagecreate (80,20) or die ("Problème de création GD");

// Choix des couleurs ici ça donne du Gris
$background_color = imagecolorallocate ($im, 238, 238, 238);

// Choix de la couleur de la police, ici Noir
$ecriture_color = imagecolorallocate ($im, 0, 0, 0);

//on récupère le texte généré du formulaire
imagestring ($im, 10, 18, 6, $_GET['code'] , $ecriture_color);
imagejpeg($im);
?>


Merci d'avance pour vos lumière biggrin.gif
captain_torche
Tiens, d'ailleurs, je me demandais (pardon pour la digression) :
Plutôt que de mettre image.php?code=code (ce qui laisse le code en clair dans le source), ne vaut-il pas mieux générer l'image, hasher le code, et ne retourner que la valeur hashée ?
Ou bien, le fait de regarder dans le source et trouver l'équivalent textuel du code, consiste-t'il en lui-même un test de turing suffisant ?
AllForEver
Le script que j'ai proposé (http://viebrock.ca/code/10/turing-protection) n'a pas ce problème, le code aléatoire est stocké dans la session.
captain_torche
Sauf que je demandais s'il s'agissait réellement d'un problème, ou si le fait de pouvoir isoler la variable dans l'url de l'image, était en soi un test de turing suffisant.
zave
CITATION(captain_torche @ jeudi 13 avril 2006, 14h02)
Tiens, d'ailleurs, je me demandais (pardon pour la digression) :
Plutôt que de mettre image.php?code=code (ce qui laisse le code en clair dans le source), ne vaut-il pas mieux générer l'image, hasher le code, et ne retourner que la valeur hashée ?
Ou bien, le fait de regarder dans le source et trouver l'équivalent textuel du code, consiste-t'il en lui-même un test de turing suffisant ?
*


L'idée est intéréssante, faudrait eventuellement qui j'y réfléchisse, je pense que ça ne serait pas trop dur à implémenter

CITATION(AllForEver @ ,jeudi 13 avril 2006, 16h04)
Le script que j'ai proposé (http://viebrock.ca/code/10/turing-protection) n'a pas ce problème, le code aléatoire est stocké dans la session.


C'est vrai que ce script est vraiment très bien, mais j'ai pas envie de mettre en route une session juste pour ce formulaire, en tout cas je le garde sous le coude pour bien l'étudier ^_^

Sinon je que je pourrais faire aussi vu que c'est pour un simple formulaire, c'est mettre une image avec un code que les visiteurs devront écrire à chaque fois, vu que c'est juste pour éviter le spam ça peut être un moyen simpliste d'y arriver

Mais bon il faudrait vu que le script est en place que je réfléchisse comment l'améliorer, ça me donnera l'occasion de bosser la librairie GD que je ne connais absolument pas smile.gif

Je vais déjà voir si le spam s'arrête malgré le fait que code transite par l'image
captain_torche
Je vais faire un blog d'ici quelques semaines, donc je vais créer un captcha.
Je pensais, dans le fichier image.php, appeler directement depuis PHP le code aléatoire, générer l'image, et hasher le code (que je renverrai sous forme hashée, dans un champ hidden, dans le formulaire de commentaire).
Comme ça, pas de session, et pas de code en clair.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.