Turing number

Soyez le premier à donner votre avis sur cette source.

Vue 10 350 fois - Téléchargée 726 fois

Description

Un turing number est une image contenant un code difficile à lire, que l'utilisateur doit entrer pour valider un formulaire, ce qui permet d'empêcher un robot de soumettre le formulaire.
La capture d'écran n'est pas très jolie... mais bon, je ne me suis occupé ici que du code, je vous laisse faire votre présentation :)

Contenu du zip :
- lisez-moi.txt : divers info sur le script (copyright, où trouver la dernière version...), où demander de l'aide...
- mpam4_php02_turing_1.1.7z : la version originale
- mpam4_php05_turing_session_ed_1.1.7z : la Session Edition

Requis (version originale) : PHP et MySQL
Requis (Session Edition) : PHP seulement

Inspiré de : IMAGE CRYPTÉE DE PROTECTION POUR FORMULAIRE WEB, par matrey : http://www.phpcs.com/code.aspx?ID=13359
et publié avec l'aimable autorisation de l'auteur

Blabla légal :) : ce script est gratuit, vous pouvez le modifier/redistribuer sous les termes du GNU General Public License publié par la Free Software Foundation, soit la version 2 de la licence, ou (à votre convenance), n'importe quelle version ultérieure (voir le fichier readme).

La source suivante n'est que le fichier l_gen.php (qui génère l'image). Pour le reste, voir le zip.

Mise à jour : inclusion du code posté par matrey pour le code en lettres, amélioration de la présentation du code (source), quelques modifications du code de génération de l'image, avec des pixels de bruit plus nombreux et de toutes les couleurs, une marge à gauche aléatoire et plus de commentaires.
        • le code ci-dessous est la version précédente ! ****
        • la MAJ est uniquement dans le zip ****

Source / Exemple :


<?php
if(!isset($_GET["session"])){die("Error generating turing number : no session specified. Get outta here ! :p");}

include("l_db.php");

$session=$_GET["session"];
$sql = "SELECT code FROM turings WHERE session ='$session'";

$resultat = mysql_query($sql);
$ligne = mysql_fetch_array ($resultat) or die('');

$code=$ligne['code'];
mysql_close();

// Création de l'image, vous ne devriez modifier les dimensions que si vous modifiez la longueur du code ! enfin, vous faites ce que vous voulez... :)
$largeur=72;
$hauteur=25;
$img = imagecreate($largeur, $hauteur) or die("Cannot Initialize new GD image stream");
// Les couleurs...
$bgc = imagecolorallocate($img, rand(235,255), rand(235,255), rand(235,255));	// la couleur de fond sera au hasard...
$black = imagecolorallocate($img, 0, 0, 0);
$gris = imagecolorallocate($img, 128, 128, 128);
// Remplissage du fond
imagefilledrectangle($img, 0, 0, $largeur, $hauteur, $bgc);
// Ecriture du code (le premier 5 est la taille - de la police par défaut - la plus grande dans GD)
// Ca évite d'avoir à installer FreeType, librairie qui ajoute le support des polices TrueType
$hor_pos=12; // position horizontale, à incrémenter à chaque fois ! (au hasard... :) )
for($i=0;$i<strlen($code);$i++)
	{imagestring($img, 5, $hor_pos, rand(2,10), $code[$i], $black);$hor_pos+=rand(10,15);}

// Là, on va rendre l'image franchement dure à lire :
// Ajout d'un bruit (pixels)
for($i=0;$i<150;$i++)
	{
	imagesetpixel($img, rand(0,$largeur), rand(0,$hauteur), $gris);
	}
// Ajout d'un bruit (lignes) N'en mettez pas trop, sinon c'est carrément illisible...
for($i=0;$i<5;$i++)
	{
	if($i<2){$x1=rand(0,$largeur);$y1=0;$x2=abs($x1-rand(0,5));$y2=$hauteur;}
	else {$x1=0;$y1=rand(0,$hauteur);$x2=$largeur;$y2=abs($y1-rand(0,5));}
	imageline($img, $x1, $y1, $x2, $y2, $black);
	}

// Crétion de l'entête
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type: image/png");
ImagePNG($img);
imagedestroy($img);

?>

Conclusion :


Là, désolé, mais je sais pas quoi mettre comme conclusion : j'ai déjà tout dit, je crois. Les commentaires sont les bienvenus (en particulier les idées pour mieux "tagger" l'image :) )
Merci à matrey pour tous ces commentaires :)
Afin de garder la meilleure compatiblité possible, je n'ai pas inclus le code d'utilisation des truetypes... De toutes façons, c'est pas très compliqué :)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
samedi 28 mai 2005
Statut
Membre
Dernière intervention
9 septembre 2005

salut,
1*j'ai essaye de modifier la forme de l'image (pixels et lignes)
mais j'ai pas arrive a imiter limage que j'ai vu sur le site de http://www.moneybookers.com
si tu essaye de t'inscrire ou te connecter tu peux voir l'image et qui est aussi sur 6 chiffres,
2* j'ai change la longueur du code et les parametres de mt_rand, et varchar(4) dans la database mais ca pas marche
merci
Messages postés
73
Date d'inscription
lundi 31 mai 2004
Statut
Membre
Dernière intervention
23 février 2007

Salut,

Essaye ça :
(commentaire du 01/06/2005 16:52:19 ;) )
dans php.ini, cherche la ligne
;extension=php_gd2.dll
et décommente-la (c'est-à-dire, enlève le ; au début) :
extension=php_gd2.dll

@+
Messages postés
4
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
12 novembre 2007

hello a tous,

j'aimerai protéger un formulaire avec tout les systemes d image aléatoir que vous proposez mais je dois pas avoir les moduels qui fo de charger car G une croix a la place des images.

quel module dois je charger ? comment dois je l installer ?

je suis ss WIN XP

Merci d avance
Messages postés
73
Date d'inscription
lundi 31 mai 2004
Statut
Membre
Dernière intervention
23 février 2007

Salut,

testetrtr -> dsl de n'avoir pas répondu plus tôt, mais c'est une question sinon compliquée, du moins fastidieuse... et j'étais en plein dans les examens. Poste ta source ici -> http://s4.invisionfree.com/MPAM_2/index.php?showforum=17 , je te montrerai quelles modifications y faire (enfin, j'essayerai).

eaurdinateur7 -> de rien :)
Messages postés
20
Date d'inscription
mercredi 14 mai 2003
Statut
Membre
Dernière intervention
5 juin 2006

j'arrive pas a ajouter ce script a mon formulaire.
quand je l'ajoute au formulaire , soit une partie du formulaire n'apparais pas , soi l'inscription se fait sans prendre en compt le script.
si qq peux m'aider avec un exemple merci
Afficher les 22 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.