Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

IMAGE ANTI-SPAM


Information sur la source

Catégorie :Graphique Classé sous : spam, flood, antispam, antiflood, image Niveau : Débutant Date de création : 07/08/2006 Date de mise à jour : 22/01/2008 21:40:08 Vu / téléchargé: 17 525 / 1 305

Note :
9,47 / 10 - par 17 personnes
9,47 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (130)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Un petit script tout simple qui crée une image anti-spam...

Deux versions (correspondant aux deux zones de la capture):
- une simple (mais plus facilement lisible par des scripts OCR)
- et la seconde ben... moins lisibles (pour les gens comme pour les robots, ^^)

Dans le cas d'une utilisation de la seconde version, il serait pas mal de remplir le formulaire avec les valeurs déjà entrées en cas d'erreur de code car ca risque de se produire (on peut aussi enlenver le 0, le O et le D des caractères disponibles).
 

Source

  • <?php
  • session_start();
  • // type de flood
  • $name = $_GET['name'];
  • // nb de caractères
  • $strlen = (int) $_GET['strlen'];
  • // taille de l'image ( width )
  • $width = $strlen * 30 + 20;
  • $height = 60;
  • // création
  • $img = imagecreatetruecolor( $width, $height );
  • // antialising, c'est plus bô! :-)
  • imageantialias( $img, 1 );
  • // chaine
  • $string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  • $chaine = '';
  • for( $i = 0; $i < $strlen; $i++ )
  • $chaine .= $string[ mt_rand( 0, 35 ) ];
  • $_SESSION[ $name ] = $chaine;
  • // couleur de départ
  • $c1 = array( mt_rand( 200, 255), mt_rand( 200, 255), mt_rand( 200, 255) );
  • // couleur finale
  • $c2 = array( mt_rand( 150, 200), mt_rand( 150, 200), mt_rand( 150, 200) );
  • $colors = array( imagecolorallocate( $img, 70, 130, 255 ) , imagecolorallocate( $img, 255, 237, 175 ), imagecolorallocate( $img, 166, 250, 186 ), imagecolorallocate( $img, 253, 188, 251 ), imagecolorallocate( $img, 255, 255, 255 ) );
  • // création de l'image
  • for( $i = 0; $i < $width; $i++ )
  • {
  • $r = $c1[0] + $i * ( $c2[0] - $c1[0] ) / $width;
  • $v = $c1[1] + $i * ( $c2[1] - $c1[1] ) / $width;
  • $b = $c1[2] + $i * ( $c2[2] - $c1[2] ) / $width;
  • $color = imagecolorallocate( $img, $r, $v, $b );
  • imageline( $img, $i, 0, $i, $height, $color );
  • }
  • // caractères
  • for( $i = 0; $i < $strlen; $i++ )
  • {
  • $col = imagecolorallocate( $img, mt_rand( 0, 120 ), mt_rand( 0, 120 ), mt_rand( 0, 120 ) );
  • imagettftext( $img, mt_rand( 20, 25 ), mt_rand( -30, 30 ), 10 + $i * 30, 35, $col, 'comic.ttf', $chaine[ $i ] );
  • }
  • // quelques lignes qui embêtent
  • for( $i = 0; $i < 8; $i++ )
  • {
  • imageline( $img, mt_rand(0, $width), mt_rand(0, $height), mt_rand(0, $width), mt_rand(0, $height), $colors[mt_rand( 0, 4 )] );
  • }
  • $noir = imagecolorallocate( $img, 0, 0, 0 );
  • // bordure
  • imageline( $img, 0, 0, $width, 0, $noir );
  • imageline( $img, 0, 0, 0, $height, $noir );
  • imageline( $img, $width - 1, 0, $width - 1, $height, $noir );
  • // header: image
  • header("Content-type: image/png");
  • imagepng( $img );
  • imagedestroy( $img );
  • ?>
  • ########################################################################
  • Seconde version:
  • <?php
  • session_start();
  • // type de flood
  • $name = $_GET['name'];
  • // nb de caractères
  • $strlen = (int) $_GET['strlen'];
  • // taille de l'image ( width )
  • $width = $strlen * 23 + 20;
  • $height = 60;
  • // taille de chaque zone de couleur
  • $widthColor = $width / 4;
  • // création
  • $img = imagecreatetruecolor( $width, $height );
  • // antialising, c'est plus bô! :-)
  • imageantialias( $img, 1 );
  • // chaine
  • $string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  • $chaine = '';
  • for( $i = 0; $i < $strlen; $i++ )
  • $chaine .= $string[ mt_rand( 0, 35 ) ];
  • $_SESSION[ $name ] = $chaine;
  • // couleur de départ
  • $c1 = array( mt_rand( 200, 255), mt_rand( 200, 255), mt_rand( 200, 255) );
  • // couleur finale
  • $c2 = array( mt_rand( 70, 180), mt_rand( 70, 180), mt_rand( 70, 180) );
  • // pas pour chaque composante de couleur
  • $diffsColor = array( ( $c1[0] - $c2[0] ) / $widthColor, ( $c1[1] - $c2[1] ) / $widthColor, ( $c1[2] - $c2[2] ) / $widthColor );
  • $start = 0;
  • $end = $widthColor;
  • for( $j = 0; $j < 4; $j++ ) // boucle pour chacune des 4 zones
  • {
  • $r = $j % 2 == 0 ? $c1[0] : $c2[0]; // composante r de départ
  • $v = $j % 2 == 0 ? $c1[1] : $c2[1]; // idem v
  • $b = $j % 2 == 0 ? $c1[2] : $c2[2]; // idem b
  • // création des lignes
  • for( $i = $start; $i < $end; $i++ )
  • {
  • if( $j % 2 == 0 )
  • {
  • $r -= $diffsColor[0];
  • $v -= $diffsColor[1];
  • $b -= $diffsColor[2];
  • }
  • else
  • {
  • $r += $diffsColor[0];
  • $v += $diffsColor[1];
  • $b += $diffsColor[2];
  • }
  • $color = imagecolorallocate( $img, $r, $v, $b );
  • imageline( $img, $i, 0, $i, $height, $color );
  • }
  • $start += $widthColor;
  • $end += $widthColor;
  • }
  • $colorsChar = array(); // on va mémoriser les couleurs des caractères
  • // caractères
  • for( $i = 0; $i < $strlen; $i++ )
  • {
  • $colorsChar[$i] = imagecolorallocate( $img, mt_rand( 0, 120 ), mt_rand( 0, 120 ), mt_rand( 0, 120 ) );
  • imagettftext( $img, mt_rand( 20, 25 ), mt_rand( -35, 35 ), 10 + $i * 23, 35, $colorsChar[$i], 'comic.ttf', $chaine[ $i ] );
  • }
  • // quelques lignes qui embêtent
  • for( $i = 0; $i < 10; $i++ )
  • {
  • imageline( $img, mt_rand(0, $width), mt_rand(0, $height), mt_rand(0, $width), mt_rand(0, $height), $colorsChar[mt_rand( 0, $strlen - 1 )] );
  • }
  • $noir = imagecolorallocate( $img, 0, 0, 0 );
  • // bordure
  • imageline( $img, 0, 0, $width, 0, $noir );
  • imageline( $img, 0, 0, 0, $height, $noir );
  • imageline( $img, $width - 1, 0, $width - 1, $height, $noir );
  • // header: image
  • header("Content-type: image/png");
  • imagepng( $img );
  • imagedestroy( $img );
  • ?>
<?php
session_start();

// type de flood
$name = $_GET['name'];
// nb de caractères
$strlen = (int) $_GET['strlen'];

// taille de l'image ( width )
$width = $strlen * 30 + 20;
$height = 60;

// création
$img = imagecreatetruecolor( $width, $height );
// antialising, c'est plus bô! :-)
imageantialias( $img, 1 );

// chaine
$string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$chaine = '';
for( $i = 0; $i < $strlen; $i++ )
	$chaine .= $string[ mt_rand( 0, 35 ) ];
	
$_SESSION[ $name ] = $chaine;

// couleur de départ
$c1 = array( mt_rand( 200, 255), mt_rand( 200, 255), mt_rand( 200, 255) );
// couleur finale
$c2 = array( mt_rand( 150, 200), mt_rand( 150, 200), mt_rand( 150, 200) );

$colors = array( imagecolorallocate( $img, 70, 130, 255 ) , imagecolorallocate( $img, 255, 237, 175 ), imagecolorallocate( $img, 166, 250, 186 ), imagecolorallocate( $img, 253, 188, 251 ), imagecolorallocate( $img, 255, 255, 255 ) );

// création de l'image
for( $i = 0; $i < $width; $i++ )
{
	$r = $c1[0] + $i * ( $c2[0] - $c1[0] ) / $width;
	$v = $c1[1] + $i * ( $c2[1] - $c1[1] ) / $width;
	$b = $c1[2] + $i * ( $c2[2] - $c1[2] ) / $width;
	$color = imagecolorallocate( $img, $r, $v, $b );
	
	imageline( $img, $i, 0, $i, $height, $color );
}

// caractères
for( $i = 0; $i < $strlen; $i++ )
{
	$col = imagecolorallocate( $img, mt_rand( 0, 120 ), mt_rand( 0, 120 ), mt_rand( 0, 120 ) );
	imagettftext( $img, mt_rand( 20, 25 ), mt_rand( -30, 30 ), 10 + $i * 30, 35, $col, 'comic.ttf', $chaine[ $i ] );
}

// quelques lignes qui embêtent
for( $i = 0; $i < 8; $i++ )
{
	imageline( $img, mt_rand(0, $width), mt_rand(0, $height), mt_rand(0, $width), mt_rand(0, $height), $colors[mt_rand( 0, 4 )] );
}

$noir = imagecolorallocate( $img, 0, 0, 0 );

// bordure
imageline( $img, 0, 0, $width, 0, $noir );
imageline( $img, 0, 0, 0, $height, $noir );
imageline( $img, $width - 1, 0, $width - 1, $height, $noir );

// header: image
header("Content-type: image/png");
imagepng( $img ); 
imagedestroy( $img );
?>

########################################################################
Seconde version:
<?php
session_start();

// type de flood
$name = $_GET['name'];
// nb de caractères
$strlen = (int) $_GET['strlen'];

// taille de l'image ( width )
$width = $strlen * 23 + 20;
$height = 60;
// taille de chaque zone de couleur
$widthColor = $width / 4;

// création
$img = imagecreatetruecolor( $width, $height );
// antialising, c'est plus bô! :-)
imageantialias( $img, 1 );

// chaine
$string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$chaine = '';
for( $i = 0; $i < $strlen; $i++ )
	$chaine .= $string[ mt_rand( 0, 35 ) ];
	
$_SESSION[ $name ] = $chaine;

// couleur de départ
$c1 = array( mt_rand( 200, 255), mt_rand( 200, 255), mt_rand( 200, 255) );
// couleur finale
$c2 = array( mt_rand( 70, 180), mt_rand( 70, 180), mt_rand( 70, 180) );
// pas pour chaque composante de couleur
$diffsColor = array( ( $c1[0] - $c2[0] ) / $widthColor, ( $c1[1] - $c2[1] ) / $widthColor, ( $c1[2] - $c2[2] ) / $widthColor );

$start = 0;
$end = $widthColor;

for( $j = 0; $j < 4; $j++ ) // boucle pour chacune des 4 zones
{
	$r = $j % 2 == 0 ? $c1[0] : $c2[0]; // composante r de départ
	$v = $j % 2 == 0 ? $c1[1] : $c2[1]; // idem v
	$b = $j % 2 == 0 ? $c1[2] : $c2[2]; // idem b
	
	// création des lignes
	for( $i = $start; $i < $end; $i++ )
	{
		if( $j % 2 == 0 )
		{
			$r -= $diffsColor[0];
			$v -= $diffsColor[1];
			$b -= $diffsColor[2];
		}
		else
		{
			$r += $diffsColor[0];
			$v += $diffsColor[1];
			$b += $diffsColor[2];
		}
		
		$color = imagecolorallocate( $img, $r, $v, $b );
		
		imageline( $img, $i, 0, $i, $height, $color );
	}
	
	$start += $widthColor;
	$end += $widthColor;
}

$colorsChar = array(); // on va mémoriser les couleurs des caractères

// caractères
for( $i = 0; $i < $strlen; $i++ )
{
	$colorsChar[$i] = imagecolorallocate( $img, mt_rand( 0, 120 ), mt_rand( 0, 120 ), mt_rand( 0, 120 ) );
	imagettftext( $img, mt_rand( 20, 25 ), mt_rand( -35, 35 ), 10 + $i * 23, 35, $colorsChar[$i], 'comic.ttf', $chaine[ $i ] );
}

// quelques lignes qui embêtent
for( $i = 0; $i < 10; $i++ )
{
	imageline( $img, mt_rand(0, $width), mt_rand(0, $height), mt_rand(0, $width), mt_rand(0, $height), $colorsChar[mt_rand( 0, $strlen - 1 )] );
}

$noir = imagecolorallocate( $img, 0, 0, 0 );

// bordure
imageline( $img, 0, 0, $width, 0, $noir );
imageline( $img, 0, 0, 0, $height, $noir );
imageline( $img, $width - 1, 0, $width - 1, $height, $noir );

// header: image
header("Content-type: image/png");
imagepng( $img ); 
imagedestroy( $img );
?>

Conclusion

Si le script est enregistré dans le fichier: anti_spam.php, on appèle l'image comme ceci:

<img src="anti_spam.php?name=livreor&strlen=4" alt="anti-flood" />

>> le contenu dans l'image sera dans $_SESSION['livreor']
>> 4 caractères

Si $spam représente l'entrée utilsateur, le test se fait comme ceci:
if( $_SESSION['livreor'] != strtoupper( $spam ) )
  // erreur ici

Voilà, j'attends vos comments sur ce petit script tout simple!

P.S. Ne pas oublier le session_start() sur la page qui vérifie les données! :-)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • comic.ttfTélécharger ce fichier [Réservé aux membres club]127 596 octets

Télécharger le zip

Historique

05 octobre 2006 16:19:05 :
Ajout zip
16 avril 2007 20:20:38 :
Complexification de l'image: - rapprochement des lettres - augmentation de la rotation - augmentation du nombre de lignes - les lignes sont de la même couleur que les caractères - plage de couleurs du dégradé plus large (donc plus proche de la couleur des caractères) - 4 dégradés au lieu d'un
22 janvier 2008 21:40:08 :
Ajout d'une info

Commentaires et avis

signaler à un administrateur
Commentaire de Anthomicro le 07/08/2006 12:41:49

Salut ;)

C'est pas mal, j'en ai fait un dans le genre en plus simple car je ne voulais pas utiliser les fontes persos, mais ton exemple est vraiment bien ;)

a +

signaler à un administrateur
Commentaire de malalam le 07/08/2006 13:22:48 administrateur CS

Hello,

pas gdchose à dire non plus, il est très joli ;-)

signaler à un administrateur
Commentaire de guill76 le 07/08/2006 21:14:56

En plus, il semble gérer très bien les gammes de couleurs différentes entre le fond et les caractères : bien joué (<>-:).

signaler à un administrateur
Commentaire de X_Cli le 08/08/2006 10:34:52

Simplement génial ! Ca faisait un moment que je voulais savoir comment ca marchait ! Merci bcp ! =)

signaler à un administrateur
Commentaire de ghuysmans99 le 09/08/2006 11:23:42

très joli !

signaler à un administrateur
Commentaire de jean84 le 29/08/2006 15:41:36

+1 pour coockiesch
tout simplement genial :-)

signaler à un administrateur
Commentaire de Toutoul le 29/08/2006 17:02:06

Très beau en tout cas l'image, mais j'arrive pas a la faire fonctionner sur Free...

signaler à un administrateur
Commentaire de coockiesch le 29/08/2006 17:31:13

Salut!
Quelle est l'erreur?
As-tu bien le répertoire sessions à la racine du site?

@++

R@f

signaler à un administrateur
Commentaire de Toutoul le 30/08/2006 08:38:24

Oui, j'ai un répertoire sessions à la racine du site, mais lorsque j'essaye ton script, il indique :

error: Call to undefined function: imageantialias() in antispam.php on line 16

En voici l'adresse :

http://antre.toutoul.free.fr/devp3/antispam.php?name=livreor&strlen=4


et lorsque j'essaye de mettre en commentaire la ligne numéro 16, il m'indique qu'il y a un problème ligne 48 soit pour la fonction imagettftext()

signaler à un administrateur
Commentaire de matthieu3556 le 30/08/2006 11:24:11

Slt, super cool ton image mais ca part l'air d etre au point si ca marche pas pour tout le monde. -=oOo=-

signaler à un administrateur
Commentaire de Toutoul le 30/08/2006 17:04:50

voila, j'ai fait un autre exemple, bon, malheureusement, la fonction imageantialias() et imagettftext() ne sont pas inscrite... Mais au moins, cela fonctionne...

en voici l'exemple :

http://antre.toutoul.free.fr/?spam

signaler à un administrateur
Commentaire de coockiesch le 30/08/2006 17:08:22

Mmh, ca doit venir de la version de GD, enfin je pense!
Bonne idée le bruit en arrière fond!

@++

R@f

signaler à un administrateur
Commentaire de jonathanrocchio le 31/08/2006 23:55:39

Je trouve que c'est très beau et surtout très simple à utiliser.
Merci pour cette aide...

signaler à un administrateur
Commentaire de dkdkdk13 le 25/09/2006 18:53:41

Bien ce script!

1- Pour ceux qui ont un probleme avec imageantialias(), voici une fonction qui rend les images plus jolies
http://icewind.ic.funpic.de/downloads/ellipse_function.txt
que j'ai pris sur
http://fr2.php.net/imageantialias

2- Pour ceux qui ont des problèmes avec imagettftext(), j'ai mis
putenv('GDFONTPATH=' . realpath('.'));
en dessous de
session_start();

3- Enfin, j'ai des problèmes avec les signes L,I,1,Q,0 et O
J'ai mis
$string = 'ABCDEFGHJKMNPRSTUVWXYZ23456789';

++

signaler à un administrateur
Commentaire de coockiesch le 25/09/2006 18:59:41

Salut!
Bonne idée! Ou bien, mettre i et q en minuscules! :)

@++

R@f

signaler à un administrateur
Commentaire de romulus67 le 03/10/2006 17:19:00

Salut,

Ton code est de loin le plus interressant que j'ai pu trouver jusque là pour ce qui est de l'anti flood.
Mais mon site tourne sur PHP 4.3.qqlchose (lycos). Déja imageantialias() n'est pas supporté (je l'ai enlevé). Maintenant autre problème, les caractères ne s'affiches pas sur l'image. J'ai déja essayé avec:
putenv('GDFONTPATH=' . realpath('.'))
en dessous de "Sessionstart()" même chose.
Pourtant avec PHP5 (chez moi en local)le même code fonctionne...
Quelqu'un peu m'éclairer?

signaler à un administrateur
Commentaire de dkdkdk13 le 03/10/2006 18:48:15

Romulus
execute un script

<?php
phpinfo();
?>

pour voir si les bibliothèques GD sont installées.
(GD support : enabled)
++

signaler à un administrateur
Commentaire de romulus67 le 04/10/2006 19:05:56

La GD est bien présente et la version exacte de php est "PHP 4.3.10"

signaler à un administrateur
Commentaire de Sombrelune le 05/10/2006 16:06:01

Romulus, essaye de copier la police que tu veux dans le dossier ou se trouve ton  code

signaler à un administrateur
Commentaire de coockiesch le 05/10/2006 16:19:38

Ajout du zip (police)! :)

@++

R@f

signaler à un administrateur
Commentaire de romulus67 le 06/10/2006 18:27:36

L'ajout de la police n'as rien changé...
Quelqu'un peu me dire si sa vaux le coup de continuer ou s'il vaut mieux que je change d'hébergeur?

Voilà la page: http://www.fun-attitude.net/album_NewUser.php

signaler à un administrateur
Commentaire de coockiesch le 06/10/2006 19:21:34

Honnêtement, c'est très intéressant! L'image qui s'affiche mais pas les caractères...
Je sais pas, dsl! Si je trouve une info je te redis!

@++

R@f

signaler à un administrateur
Commentaire de stella2809 le 31/10/2006 18:54:49

Salut moi aussi j'ai l'image qui s'affiche mais pas les caractères :(
Que faire? hebergeur: amen.

signaler à un administrateur
Commentaire de romulus67 le 01/11/2006 04:08:23

J'ai toujours rien trouver...

Je suis chez lycos et pourtant ils ont GD2.0 et freetype.

finalement j'ai modifier le code en utilisant imagestring() à la place de imagettftext() mais le résultat n'est pas bien...

http://www.fun-attitude.net/album_NewUser.php

signaler à un administrateur
Commentaire de coockiesch le 02/11/2006 21:33:08

Mmmh, tjs pas d'infos non plus, dsl...

@++

R@f

signaler à un administrateur
Commentaire de minijet le 04/11/2006 23:51:22

Même pour un vieux comme moi, cela a été super facile à mettre en place( ueh, il faut avouer qu'après avoir descendu les fontes cela allait beaucoup mieux.

Merci pour ce script.
@+
Phil

signaler à un administrateur
Commentaire de lanner le 16/11/2006 19:12:31

bonjour , si quelqu'un pouvait un peu me guider, je ne comprend pas vraiment tout ce qu'il faut faire, pour que la variable $_SESSION['livreor']; il faut mettre aussi avant session_start(); ? car si je ne met rien quand je test un echo il n'y a aucune valeur, par contre si je met mon session_start la valeur ressorti ne correspond pas aux chiffres de l'image ... Je suis un petit perdu , merci d'avance

signaler à un administrateur
Commentaire de lanner le 16/11/2006 20:25:01

en fait ca marche mais il faut bien un session_start dans la page formulaire

signaler à un administrateur
Commentaire de seyvapul le 23/11/2006 03:42:21

Merci ton code marche à merveille, j'ai juste supprimé les O et 0 pour eviter des confusions !

signaler à un administrateur
Commentaire de seyvapul le 25/11/2006 00:43:00

Je me suis permis de modifier un peu la source, un tout petit peu, car elle est reellement excellente.
J'ai simplement renomé 3 fontes différentes puis placé dans un tableau et je les appelle aléatoirement pour chaque caractère.

// caractères
$font= array('font_1.ttf','font_2.ttf','font_3.ttf');
for( $i = 0; $i < $strlen; $i++ )
{
$col = imagecolorallocate( $img, mt_rand( 0, 120 ), mt_rand( 0, 120 ), mt_rand( 0, 120 ) );
imagettftext( $img, mt_rand( 20, 25 ), mt_rand( -30, 30 ), 10 + $i * 30, 35, $col, $font[mt_rand(0,2)], $chaine[ $i ] );
}

signaler à un administrateur
Commentaire de seyvapul le 25/11/2006 00:44:21

dsl encore moi ... je n'arrive pas à avoir un fond transparent sur l'image, est ce que quelqu'un peut m'aider ?

signaler à un administrateur
Commentaire de romulus67 le 25/11/2006 05:41:24

J'ai enfin trouvé pour imagettftext()!!

Chez moi la police doit se trouver dans un sous-dossier de celui qui accueil le script. Je l'appel donc comme ceci "police/comic.ttf". C'est bizarre, mais sa tourne!

Sinon j'ai remarqué avec FireFox: Quand je saisie une chaîne fausse (mauvais code), je n'ai qu'à faire "page précédente" pour retenter ma chance avec le même code car l'image ne se rafraîchie pas. Est-ce dangereux?

J'ai donc fait en sorte de détruire la session au cas d'erreur, par conséquent obligation de rafraîchir la page pour relancer une nouvelle session. Le problème avec cette méthode, c'est que je perd toutes les données du formulaire invalidé en cas d'erreur. Quelqu'un connaît une parade?

Merci d'avance!

signaler à un administrateur
Commentaire de seyvapul le 25/11/2006 11:18:18

pour ma part quand un champs est mal rempli, je renvoie sur un clone de ma page de formulaire avec des valeur par defaut qui sont les champs correctement remplie, mais tous les champs secrêt eux ne sont pas repris, il faut les ressaisir d'office.

signaler à un administrateur
Commentaire de metis15 le 24/12/2006 14:43:23

Bonjour,
étant totalement nul en matière e codage, quelqu'un peut-il m'explique comment utiliser celà ?

signaler à un administrateur
Commentaire de coockiesch le 25/12/2006 13:31:36

Salut!
- Mettre le script et éventuellement la font dans un répertoire

- Depuis la page formulaire:
# appeler l'image: <img src="anti_spam.php?name=livreor&strlen=4" alt="anti-flood" />
# zone de saisie de code:
<input type="text" maxlength="4" name="spam" value="" />


- Dans la page de verif:
# démarrer la session: session_start();
# récupérer le code entré par le visiteur:
$spam = isset( $_POST['spam'] ) ? strtoupper( $_POST['spam'] ) : '';
# vérifier:
if( $_SESSION['livreor'] != $spam )
// erreur ici

Voilà!

@++

R@f

signaler à un administrateur
Commentaire de lanner le 25/12/2006 13:55:09

Mais est il vraiment efficace contre les robots à l'heure d'aujourd'hui ? sachant que certains passent tranquille les captcha

signaler à un administrateur
Commentaire de coockiesch le 25/12/2006 18:36:59

Salut!
Je pense que oui... On pourrait encore le complexifier un peu, genre rajouter des lignes et des formes ; faire que les lettres se touchent, ...

@++

R@f

signaler à un administrateur
Commentaire de metis15 le 31/12/2006 18:12:12

OK merci, vais essayer !!! (;o))))))

signaler à un administrateur
Commentaire de liteulkevin le 03/01/2007 10:47:08

Bonjour, je trouve cette source très instructive.
Cependant, je n'arrive pas à l'utiliser.

Lorsque je l'ajoute en local dans mon formulaire, j'ai d'affiché Anti-flood à la place de l'image.
Lorsque je fais clique droit sur l'image, car Anti-Flood à l'air d'être une image, j'ai :

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at e:\dev\easyphp1-8\www\creation de cpt\en crs\anti_spam.php:1) in e:\dev\easyphp1-8\www\creation de cpt\en crs\anti_spam.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at e:\dev\easyphp1-8\www\creation de cpt\en crs\anti_spam.php:1) in e:\dev\easyphp1-8\www\creation de cpt\en crs\anti_spam.php on line 65

avec des caractères à la place de l'image.

j'ai easyphp avec gd2.

Quelqu'un peut m'aider svp?

signaler à un administrateur
Commentaire de liteulkevin le 03/01/2007 11:05:17

Bon ben désolé, j'ai rien dit, ça marche.
Désolé.
(comprend pas comment ça peut marcher maintenant.)

signaler à un administrateur
Commentaire de romulus67 le 03/01/2007 11:18:00

Tu avais certainement du code html ou un espace avant d'anoncer session_sart()...

signaler à un administrateur
Commentaire de transgoku le 05/01/2007 02:27:29

Excuse-moi je n ai pas bien compris le code a mettre dans la page de verification...s.v.p donnez-moi le code au complet.. merci

signaler à un administrateur
Commentaire de macleod7 le 30/01/2007 19:23:44

Bonjour
le script pourrait m'aider mais j'utilise un formulaire de contact, j'ai créer donc la page anti_spam.php

dans la page contact.php j'ai mis tout en haut ceci
<?php
session_start();
?>

ensuite toujours dans cette page j'appelle le fichier php anti_spam comme ceci
<img src="anti_spam.php?name=contact&strlen=4" alt="anti-flood" />

Pouvez me dire à quoi correspond le nom après name= apparemment il fait référence à un livre d'or or pour moi c'est contact.php

comme ma page s'appelle contact j'ai contact derrière name

Pouvez vous me dire si j'ai bien fait merci

signaler à un administrateur
Commentaire de seyvapul le 30/01/2007 21:53:28

Le nom après name= est en fait le nom que tu vas donner à ta variable $_SESSION.
si par exemple tu mets name=contact alors le contenu de l'image (la valeur du code à recopier) se trouvera dans $_SESSION['contact'].

voila j'espère avoir répondu à ta question sans dire trop de bêtises.

signaler à un administrateur
Commentaire de macleod7 le 30/01/2007 22:53:18

ok merci je te remercie de ta réponse je comprend mieux, mais ce code serait bien car facilement adaptable à un formulaire quelconque, j'heberge ce formulaire sur free et l'image n'apparait pas et la je viens de faire le test d'envoi le formulaire s'envoi quand meme, mais je vais chercher autre chose dommage merci quand meme

signaler à un administrateur
Commentaire de coockiesch le 30/01/2007 23:43:17

Yop!
Faut peut être enlever la ligne 16: imageantialias( $img, 1 );

@++

R@f

signaler à un administrateur
Commentaire de macleod7 le 30/01/2007 23:52:11

Oui c'estune bonne idée mais non j'ai toujours une croix rouge.
pourtant la version php sur free et la 4.4.2
je continue de chercher à force

signaler à un administrateur
Commentaire de _La_Fouine_ le 10/02/2007 14:43:12

Salut !

J'utilise ce script avant de valider un formulaire mais je rencontre un probleme que je n'arrive pas à resoudre.

La variable contenue dans $_SESSION['livreor'] est vide à l'arrivée sur la page. Quand j'actualise, cette variable recoit la valeur de l'image precedente et non celle de l'image actuellement affichée.

Donc juste un petit message pour savoir si quelquu'un connaissait ce bug, que je suis le seul a rencontrer d'apres les commentaires.

Merci

signaler à un administrateur
Commentaire de lanner le 10/02/2007 16:07:51

moi je l'ai eu j'ai simplement mis un session_start(); dans la page du formulaire avant de faire mon test

signaler à un administrateur
Commentaire de _La_Fouine_ le 11/02/2007 12:37:28

Re,

Merci Lanner et Cookiesch pour vos réponses.

J'ai bien un session_start(); dans la page du formulaire, j'avais d'ailleurs laisser au départ celui de anti_spam.php, ce qui ne change rien non plus.

De plus, je vide la variable apres le test du formulaire et dans anti_spam.php je teste si elle existe et la vide au cas ou (ca ne sert à rien mais bon dans l'doute ...).

Le problème viens du fait que lorsque j'arrive une première fois sur le formulaire cette variable est vide et aprés raffraichissement de la page, elle recoit la valeur de l'image precedente. Ce qui explique pourquoi cette valeur est vide au départ.

Merci encore.

signaler à un administrateur
Commentaire de Caze64 le 28/02/2007 10:22:56

Je rencontre un problème avec la fonction imagettftext  comme pas mal de personne.
Je l’ai testé en local sur mon PC avec une police standard dans une commande du genre :
imagettftext($Image, 8, 30, $x, $y, $couleur, "Arial",$Texte);

Ca marche impeccable.

Par contre lorsque j’ai voulu le publier chez Free, mon hébergeur, j’ai obtenu l’erreur suivante :

Warning: imagettftext() [function.imagettftext]: Could not find/open font in /mnt/146/free.fr/f/4/pyreneesespacevtt/Courbe.php on line 600

En quelque sorte il ne trouve pas le fichier police Arial.ttf sur le serveur.

J’ai suivi le conseil d’internautes en plaçant directement ce fichier sur la racine de mon espace de publication et en modifiant la variable d’environnement par la commande

putenv('GDFONTPATH=' . realpath('.'));

Mais je me suis rapidement aperçu que je n’en avais pas le droit (le safe_mode est activé et la fonction putenv interdite).

D’ailleurs j’ai contacté l’assistance de Free, voici leur réponse :


« Il n'est pas possible d'utiliser la fonction imagettftext sur les pages perso de Free malheureusement, la gestion du safe_mode est activée pour des raisons de stabilité liées à notre hébergement mutualisé. »



Connaissez-vous un moyen de contourner le problème ?
Pourquoi est-ce que ça marche en local ?

signaler à un administrateur
Commentaire de seyvapul le 28/02/2007 19:26:12

Essaye ce que propose DKDKDK13 un peu plus haut, tu as peut-être pas lu le post dans toutes ces données :

http://www.phpcs.com/auteurdetail.aspx?ID=867237

J'ai pas d'autre solution pour le moment.

signaler à un administrateur
Commentaire de McPeter le 06/03/2007 02:18:38

Excellente source
aussitôt mise en application :)
Bravo !!

signaler à un administrateur
Commentaire de McPeter le 06/03/2007 03:53:09

Bon ben deçu ... pas par la source mais par la finalisation ...
je suis touhours autant spammé sur mon site.. apparement c'est "facilement choppable" par un soft style OCR
Sniff

signaler à un administrateur
Commentaire de coockiesch le 06/03/2007 09:55:33

Okay, vais tâcher de faire une mise à jour plus complexe bientôt!

@++

R@f

signaler à un administrateur
Commentaire de louisdefunes le 14/04/2007 01:12:09

salut a tous je vient de l'installer jusqu'a la sans souci image s'affiche parfaitement masi je peut ecrire n'immporte quel chiffre ou lettre il me laisse passer

en sachant que j'ai mit ceci au debut du hichier

<?php
session_start();
$spam = isset( $_POST['spam'] ) ? strtoupper( $_POST['spam'] ) : '';
if( $_SESSION['panelclients'] != $spam )
?>

quelqu'un aurai une idée svp merci

signaler à un administrateur
Commentaire de coockiesch le 14/04/2007 09:27:17

Salut!
Quelles sont les lignes suivantes? Parce que, ca peut changer du tout au tout...

@++

R@f

signaler à un administrateur
Commentaire de louisdefunes le 14/04/2007 12:19:29

oki pas de souci les voici

<?php
session_start();
$spam = isset( $_POST['spam'] ) ? strtoupper( $_POST['spam'] ) : '';
if( $_SESSION['panelclients'] != $spam )
?>
<html>
<head>
<title>Performant-Heberg : Espace clients</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Language" content="fr">
<meta name="description" content="Performant-Hosting : Espace clients">
<meta name="keywords" content="Performant-Heberg, heberg, performant, hebergement, bande passante, windows, debian, html, php, perl, mysql, backup, allopass, directadmin, ftp, apache">
<meta http-equiv="identifier-url" name="Identifier-URL" content="">
<meta http-equiv="revisit-after" name="Revisit-after" content="7 days">
<meta http-equiv="robots" name="Robots" content="all">
<meta name="robots" content="INDEX|FOLLOW">
<link href="http://www.performant-heberg.com/style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.Style8 {color: #000000}
.Style10 {color: #09BAB2}
.Style12 {
color: #09BAB2;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: 10px;
}
-->
</style>
</head>

signaler à un administrateur
Commentaire de lanner le 14/04/2007 12:27:21

heu ton code ne veux rien dire la , tu valide si c'est différent ? : if( $_SESSION['panelclients'] != $spam )
donc je vois pas l'intérêt, et ton code n'est pas complet on ne sait meme pas ce que tu met sur le "else"
Logiquement pour une différence on affiche plutot un message de blocage , mais la ton code n'apporte aucune informations.

signaler à un administrateur
Commentaire de louisdefunes le 14/04/2007 12:29:23

c'est un fichier index.php il et en 2 partie 1 ere partie le haut et en php l'autre moitier et en html donc moi le bout de code je l'est mit en haut de html sa ne fonctionne pas apres je le mit tout en haut donc au dessus de <?php et pareil

signaler à un administrateur
Commentaire de louisdefunes le 15/04/2007 00:06:13

voila se que j'ai mit sur ma page et sa fonctionne pas

<?php
session_start();
if(isset($_POST['submit']))
{
if ($_SESSION['clientconnection'] == $_POST['code'])
{
echo'le code entré est bon';
}
else
{
echo' le code entré n\'est pas bon';
}
}
else
{
?>
<tr>
<td><font face="Tahoma" size="2"><center>
<img src="http://www.performant-heberg.com/crypt/anti_spam.php?name=clientconnection&strlen=4" alt="anti-flood"></center></font></td>
<td><input type="text" maxlength="4" name="imageantiflood" value="" /></td>
</tr>
<?php
}
?>

signaler à un administrateur
Commentaire de lanner le 15/04/2007 12:24:16

tu valide comment ta page ? ^^

signaler à un administrateur
Commentaire de lanner le 15/04/2007 12:28:56

mais bon sachant que cela ne bloque pas spécialement les robots il faudrait peut être mieux attendre une mise à jour de cette source plus costaud

signaler à un administrateur
Commentaire de louisdefunes le 15/04/2007 21:32:56

je valide avec se bout de code :
<br><input name="ident" value="Identification" type="submit"><br>

qui etait sous :
<td><input type="text" maxlength="4" name="imageantiflood" value="" /></td>

signaler à un administrateur
Commentaire de lanner le 15/04/2007 21:39:36

$_POST['code']
input type="text" maxlength="4" name="imageantiflood" value="" />

Tu as mis 'code' donc ton name aurait du s'appeler pareil je suppose (tu as mis imageantiflood)
Ou alors à quoi correspond ton $_POST['code'] ?

signaler à un administrateur
Commentaire de louisdefunes le 15/04/2007 21:56:03

e nfaite $_POST['code'] je ne sais pas d'ou j'ai sorti sa ^^ pourquoi je deverait mettre quoi a la place?

signaler à un administrateur
Commentaire de lanner le 15/04/2007 22:14:25

input type="text" maxlength="4" name="code" value="" />

$_POST['code'] c'est le resultat de ton champ name="code"

signaler à un administrateur
Commentaire de coockiesch le 16/04/2007 18:54:52

Bonjour à tous!
  Je tente d'étoffer un peu l'image pour la rendre plus difficilement lisible par des OCR...

@++

R@f

signaler à un administrateur
Commentaire de coockiesch le 16/04/2007 20:24:01

Source mise-à-jour... J'attends vos commentaires / critiques, :)

@++

R@f

signaler à un administrateur
Commentaire de tottosche le 25/04/2007 22:10:10

euh moi perso, l'image ne veut pas s'afficher :( ... (je teste en easyPHP, je sais pas si dessu, y'a tout squ'il faut la ou il faut pour l'affichage de l'anti spam...

signaler à un administrateur
Commentaire de coockiesch le 26/04/2007 09:11:52

Yop!
La font est bien dans le même rep que le script?
Si tu es sous PHP4, enlève cette ligne: imageantialias( $img, 1 );

@++

R@f

signaler à un administrateur
Commentaire de kokliko00 le 04/06/2007 20:15:43

Bonjour !

J'ai essayer ce code qui à l'ai trés bien réalisé. Seulement je suis bloqué dés le debut car le
<img src="anti_spam.php?name=livreor&strlen=4" alt="anti-flood" />
n'affiche pas d'image (il affiche comme une image où le lien est brisé) . Je suis sous Php 5.2.0 et GD2 est activé !
J'ai tout essayer mais rien ne marche ...

Merci de m'indiquer se que je pourrait essayer...

tcho

signaler à un administrateur
Commentaire de coockiesch le 06/06/2007 14:44:55

Yop!
  As tu mis la police dans le répertoire du script?

@++

R@f

signaler à un administrateur
Commentaire de tifon le 09/06/2007 17:12:26

Comment faire pour que ce code verifie si ce code est bon et ensuite envoi un email ???
Merci d'avance ...
t1f°n

signaler à un administrateur
Commentaire de kokliko00 le 09/06/2007 18:13:14

Oui bien sur coockiesch ...

Merci comme meme .....

kokliko00

signaler à un administrateur
Commentaire de tifon le 09/06/2007 18:54:26

C'est bon j'ai trouvé tout seul (une autre technique) allez voir là :
http://www.webmaster-hub.com/lofiversion/index.php/t29494-0.html

(si quelqu'un veut tout de meme m'expliquer car ce code est plus performent ...)

signaler à un administrateur
Commentaire de tifon le 09/06/2007 19:44:20

c'est ok pour moi , j'y suis enfin arrivé ... bravo pour le code !!!

signaler à un administrateur
Commentaire de aroh le 05/07/2007 21:29:17

excellent script.

signaler à un administrateur
Commentaire de sidommou le 09/07/2007 16:09:27

je sais que c un peu bète. J'ai mis ton code dans une page et je l'ai testé et ça marche.
mon problème est que le code doit être mis tout au début de la page. hors, moi je veux affcher l'image dans un formulaire. si qlq un peut m'aider
merci

signaler à un administrateur
Commentaire de coockiesch le 09/07/2007 18:24:58

Yop!
  C'est fait pour être utilisé dans un formulaire...

<img src="anti_spam.php?name=livreor&strlen=4" alt="anti-flood" />
>> Ca tu le met où tu veux

Et le code dans anti_spam.php

@++

R@f

signaler à un administrateur
Commentaire de sidommou le 09/07/2007 19:03:06

je viens de le résoudre mais merci comme même

signaler à un administrateur
Commentaire de aroh le 09/07/2007 19:06:31

^^

signaler à un administrateur
Commentaire de lanner le 05/08/2007 22:57:28

Salut coockiesch , tu parlais plus haut d'une mise à jour importante ,elle verra le jour ? merci

signaler à un administrateur
Commentaire de coockiesch le 06/08/2007 12:55:08

Salut!
  La mise à jour a été faite, elle correspond à la seconde version du code (image du bas sur la capture)...

Mais si je trouve d'autrs idées, j'en referai une! :)

Propositions bienvenues! :)

@++

R@f

signaler à un administrateur
Commentaire de McPeter le 07/08/2007 23:59:02

Proposition :
en se basant sur ton code ... mettre une addtion par exemple :)

à la place d'une sortie style : RX31
mettre : ( 145 + 45 ) - 10         :=)

il faudra bien entendu saisir le résultat de l'opération ^^

inclure dans ton code le niveau de l'opération :  2 chiffres à 2-3 nombres ou plus ... ;)


@++

signaler à un administrateur
Commentaire de coockiesch le 08/08/2007 19:32:35

MMh, on pourrait imaginer une telle solution!
Je regderai quand j'aurai l'occas!

Merci pour l'idée!

@++

R@f

signaler à un administrateur
Commentaire de ChristBike7 le 20/09/2007 18:01:33

J'ai un problème d'affichage d'image. En effet j'ai mi mon code dans anti_spam.php
Sur ma page ou se trouve mon formulaire j'ai mi : <?php session_start(); ?> tout en haut de ma page.
Et plus bas dans mon formulaire j'ai mis ceci : <img src="anti_spam.php?name=livreor&strlen=4" alt="anti-flood" />

Comment ca se fait que l'image ne s'affiche pas?

J'ai esayphp et la version 5.2.0 de php.

Un grand merci pour votre aide :-)

Chris

signaler à un administrateur
Commentaire de coockiesch le 20/09/2007 18:03:26

Hello!
  Est-tu sûr que gd est activé? Et que la police est dans le répertoire du script? :)

@++

R@f

signaler à un administrateur
Commentaire de ChristBike7 le 20/09/2007 18:11:46

Oui GD est activé.
anti_spam.php est à la racine de mon site donc j'ai mis également ma police à ce niveau.
Il faudrait que je mette tout ca dans un dossier?

Merci!

Chris

signaler à un administrateur
Commentaire de ChristBike7 le 20/09/2007 18:21:16

A la place de l'image, il me met anti-flood. Il m'affiche donc la description de l'image.
J'arrive vraiment pas a comprendre pourquoi il m'affiche pas l'image :-(

signaler à un administrateur
Commentaire de coockiesch le 20/09/2007 18:33:05

Le script est-il en ligne?
Puis-je avoir l'adresse de la page? :-) (par PM, si jms)

@++

R@f

signaler à un administrateur
Commentaire de ChristBike7 le 20/09/2007 22:31:31

J'ai réussi à afficher l'image sur ma page de formulaire! :-)
Mais il me l'affiche en petit car aucun caractère ne s'affiche!! :-(

D'ou peut venir l'erreur?

Chris

signaler à un administrateur
Commentaire de masterjuh le 20/01/2008 19:41:24

bonsoir tout le monde,

Néophyte en php, j'ai beaucoup aprécié de tomber sur ce script, que j'ai facilement adapté sur le formulaire "d'envoie à un ami" trouvé ici (http://www.tamingthebeast.net/articles5/tell-a-friend-script-2.htm), en anglais certe mais c'est du "clé en main".

J'écris ici car la seule galère que j'ai eu, ne connaissant pas le php, c'est de pas avoir mis "session_start();" en haut de ma page qui teste les entrée du formulaire. Sans cela évidemment le code entré par le visiteur n'est comparé avec rien, et le résultat est que le formulaire est toujours bloqué.

Voilà, content d'avoir trouvé, je souhaite évité à d'éventuels néophytes en mon genre une paire d'heure de stress.

encore merci pour ce script

signaler à un administrateur
Commentaire de coockiesch le 22/01/2008 21:41:27

Salut!
  Suite au commentaire dexdc Masterjuh, information ajoutée, merci! :-)

@++

R@f

signaler à un administrateur
Commentaire de yakusa77 le 10/05/2008 11:46:41 9/10

Salut

Merci pour ce script tres simple à mettre en place
il me convient parfaitement
bye

signaler à un administrateur
Commentaire de djimson le 23/07/2008 13:44:56

Salut, je trouve le scrip tres genial mais j'arrive pas a l'utiliser. Surtout la page de verif. Qui pe bien m'aider???
Merci

signaler à un administrateur
Commentaire de coockiesch le 23/07/2008 13:51:21

Salut!
  Qu'as-tu deja mis comme code dans ta page verif?

Raf

signaler à un administrateur
Commentaire de djimson le 24/07/2008 13:40:27

Justement j'ai sais pas si je dois creé un scrip veri.php ou si la verification se fait directement dans mon formulaire.

signaler à un administrateur
Commentaire de coockiesch le 24/07/2008 13:42:20

Salut!
  Il faut faire la vérification dans la page où tu traites les données de ton formulaire... :)

Y'a un exemple juste en dessous de ma source, :)

Raf

signaler à un administrateur
Commentaire de djimson le 24/07/2008 13:43:36

J'ai oublié le salut ds mon message precedent
NB : L'image s'affiche correctement mais en mettant n'importe quoi, ca passe dc ya pas de verification. Je suis debutant en programmation, je precise. Merci

signaler à un administrateur
Commentaire de djimson le 24/07/2008 13:47:22

J'ai suivi votre exemple a la lettre mais j'arrive pas? Je vous envoie ma source??

signaler à un administrateur
Commentaire de coockiesch le 24/07/2008 13:50:32

Dsl, non, pas le temps aujourd'hui...

Dans la page d'affichage du formulaire et dans celle de verif, tu oublies pas le session_start( ) tout en haut.
Ensuite, pour vérifier, c'est ce code:
if( $_SESSION['livreor'] != strtoupper( $spam ) )
  // erreur ici

Dans erreur ici, faut mettre qqch pour que les données ne s'envoient pas car le code est faux, :)

Raf

signaler à un administrateur
Commentaire de djimson le 24/07/2008 13:55:40

Voici la source de ma page de formulaire


<?php session_start();
# récupérer le code entré par le visiteur:
$spam = isset( $_POST['spam'] ) ? strtoupper( $_POST['spam'] ) : '';
# vérifier:
if( $_SESSION['livreor'] != $spam )
// erreur ici  
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- DW6 -->
<head>
<!-- Copyright Association Chorus Burkina Faso. -->
<title>Festival International de chants et musiques sacr&eacute;s :: CHORUS</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="description" content="Chorus : Festival International de chants en choeur et musiques sacrées de Ouagadougou" />
<meta name="description" content="Chorus : Livre d'or pour vos critiques et suggestions" />
<meta name="keywords" content="Serge Bayala, chorus-burkina, chorus ouagadougou, festival de chants sacré ouagadougou, nuit de la lumière, saint-esprit, Association Chorus Burkina Faso, chants en choeur, musiques religieuses, rabbi burkina, chorus production" />
<link rel="stylesheet" href="mm_entertainment.css" type="text/css" />
<style type="text/css">
<!--
.Style1 {color: #999999}
.Style2 {font-size: 30px}
.Style3 {color: #FFFFFF}
-->
</style>
</head>
<body bgcolor="#14285f">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="02021e">
    <td colspan="4" rowspan="2" nowrap="nowrap"><img src="Images/logo.jpg" alt="Header image" width="225" height="140" border="0" /></td>
    <td height="58" nowrap="nowrap" colspan="3" id="logo" valign="bottom"><span class="Style2 Style3">ASSOCIATION CHORUS - BURKINA</span> </td>
    <td width="4">&nbsp;</td>
  </tr>
  <tr bgcolor="02021E">
<td height="57" nowrap="nowrap" colspan="3" id="tagline" valign="top">
  <p>
     <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="763" height="39" title="Animation flash">
      <param name="movie" value="flash/amine_slogan.swf" />
      <param name="quality" value="high" />
      <embed src="flash/amine_slogan.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="763" height="39"></embed>
    </object>
  </p></td>


<td width="4">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="8" bgcolor="#cc3300"><img src="mm_spacer.gif" alt="" width="1" height="2" border="0" /></td>
  </tr>

   <tr>
    <td colspan="8"><img src="mm_spacer.gif" alt="" width="1" height="2" border="0" /></td>
  </tr>

   <tr>
    <td colspan="8" bgcolor="#cc3300"><img src="mm_spacer.gif" alt="" width="1" height="1" border="0" /></td>
  </tr>

   <tr>
    <td colspan="8">&nbsp;<br />
&nbsp;<br /> </td>
  </tr>
  <tr>
    <td width="163" valign="top" height="370">
<?php include("rubrique.php"); ?></td>
    <td width="1" bgcolor="#445DA0"><img src="mm_spacer.gif" alt="" width="1" height="1" border="0" /></td>
    <td width="50"><img src="mm_spacer.gif" alt="" width="50" height="1" border="0" /></td>
    <td colspan="2" valign="top"><img src="mm_spacer.gif" alt="" width="304" height="1" border="0" /><br />
<table border="0" cellspacing="0" cellpadding="0" width="452">
        <tr>
          <td width="412" height="41" class="pageName"><div align="center">LIVRE D'OR</div></td>
        </tr>
        <tr>
          <td class="bodyText">

    <form method="post" action="livreor.php">
        <p class="Style4">Vous avez aimez ce site? Alors laissez nous vos impressions et suggestions</p>
        <table width="88%" border="0" cellspacing="0">
          <tr>
            <td width="26%"><strong>Votre pseudo:</strong> </td>
            <td width="74%" bgcolor="#CC6600"><input name="pseudo" /></td>
          </tr>
          <tr>
            <td><strong>Message :</strong></td>
            <td><p>
              <textarea name="message" rows="8" cols="45"></textarea>
            </p>
              <p>ENTREZ L'IMAGE SUIVANTE: <img src="anti_spam.php?name=livreor&strlen=4" alt="anti-flood" width="131" height="21" /> </p>
              <p><input type="text" maxlength="4" name="spam" value="" /></p></td>
          </tr>
          <tr>
            <td colspan="2"><div align="center">
              <input name="submit" type="submit" value="Envoyer" />
            </div></td>
          </tr>
        </table>
        </form>

    <p class="pages">

<?php
mysql_connect("chorus2008.ipowermysql.com", "chorus", "chorus");
mysql_select_db("chorus_base");

// --------------- Etape 1 -----------------
// Si un message est envoyé, on l'enregistre
// -----------------------------------------

if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
    $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
    $message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); // De même pour le message
    $message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />

    // On peut enfin enregistrer :o)
    mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
}

// --------------- Etape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------

// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 5; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo '<strong><u>Page</u> </strong>: ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
}
?>

</p>
<hr color="#0000FF"/>
<?php


// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------

if (isset($_GET['page']))
{
        $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
        $page = 1; // On se met sur la page 1 (par défaut)
}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

$reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

while ($donnees = mysql_fetch_array($reponse))
{
        echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
}

mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>

</p>
           </td>
        </tr>
        <tr>
          <td class="bodyText">&nbsp;</td>
        </tr>
      </table> </td>
    <td width="50"><img src="mm_spacer.gif" alt="" width="50" height="1" border="0" /></td>
    <td width="266" valign="top"><img src="mm_spacer.gif" alt="" width="1" height="10" border="0" /><?php include("groupe_nuit_lumiere.php"); ?> <br /> </td>
    <td width="4">&nbsp;</td>
  </tr>
  <tr>
    <td width="163">&nbsp;</td>
    <td width="1"></td>
    <td width="50">&nbsp;</td>
    <td width="4">&nbsp;</td>
    <td width="456"><div align="center" class="Style1">Conception et r&eacute;alisation : Djimson KONE +226 78 83 11 98 E-mail: <a href="djimi_kone@yahoo.fr" class="Style5 Style3">djimi_kone@yahoo.fr</a> Webmaster</div></td>
    <td width="50">&nbsp;</td>
    <td width="266">&nbsp;</td>
    <td width="4">&nbsp;</td>
  </tr>
</table>
</body>
</html>

signaler à un administrateur
Commentaire de coockiesch le 24/07/2008 14:00:19

Quand je t'ai proposé de mettre le code de verif sur la page de traitement des données, c'était pas une blague...
Donc ca va après:
$message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />

signaler à un administrateur
Commentaire de djimson le 24/07/2008 14:06:48

ok je vais le faire. merci de votre temp

signaler à un administrateur
Commentaire de saalah le 10/09/2008 15:00:49

bonjour,

j'aurai besoin d'un peu d'aide, parce que pour l'instant j'arrrive pas faire fonctionner ce script...

1° if( $_SESSION['livreor'] != strtoupper( $spam ) )
  // erreur ici

si j'ai bien compris la je dois completer le code (si le code n'est pas bon> message d'erreur, si le code est correct> enregistrement du message??)

et j'ai aussi un probleme au niveau des sessions. j'ai pas encore decouvert ca, et j'aimerais deja savoir si pour ce script je dois creer un dossier session ou j'ai lu un "repertoire"??


merci d'avance pour votre aide.

signaler à un administrateur
Commentaire de Benz8 le 08/11/2008 16:12:42

slt, j'ai met le font dans le même répertoire de anti_spam.php et le formulaire.php j'ai bien utiliser les session mais le problème c'est que je recois ce message a la place de l'image : anti-flood , j'ai rien compris! sachant que j'utilise le easyphp Version 4.3.10 est j'ai pas trouver l'endroit ou je peux vérifié le GD, en tous cas voila l'info de easyphp :
System Windows NT BENZ8PC 6.0 build 6001
Build Date Dec 14 2004 17:46:48
Server API Apache
Virtual Directory Support enabled
Configuration File (php.ini) Path d:\easyphp1-8\apache\php.ini
PHP API 20020918
PHP Extension 20020429
Zend Extension 20021010
Debug Build no
Thread Safety enabled
Registered PHP Streams php, http, ftp, compress.zlib

signaler à un administrateur
Commentaire de coockiesch le 08/11/2008 16:38:56

Salut!
  A mon avis, le chemin mis dans la balise <img> vers le script n'est pas le bon...

Raf

signaler à un administrateur
Commentaire de Benz8 le 08/11/2008 16:59:50

slt, bon j'ai vérifier le chemin, il est bon , tous les fichiers sont dans le même répertoire et mes liens utiliser sont directe, tu veux que je t'envoies le CS ?

signaler à un administrateur
Commentaire de coockiesch le 08/11/2008 17:03:57

Non, désolé, j'ai pas le temps...
Je te propose:
1) d'accéder directement à l'image pour voir si elle fonctionne:
anti_spam.php?name=livreor&strlen=4

2) Change le alt="" de la balise img et rafraichis ta page... Si le texte change, ca renforce, mon idée que le chemin n'est pas le bon

Je te laisse me tenir au courant, :)

Raf

signaler à un administrateur
Commentaire de Benz8 le 08/11/2008 17:18:46

j'ai fais ton premier teste (accédée directement au scripte qui génère l'image) et j'ai reçu ce message d'erreur : Fatal error: Call to undefined function: imagecreatetruecolor() in fr\membre\anti_spam.php on line 16, si comme la bibliotheque de l'instruction imagecreatetruecolor() n'existe pas ou je sais pas! ça se peut être le GD ?!?

signaler à un administrateur
Commentaire de coockiesch le 08/11/2008 17:25:05

Oui, peut être. Vérifie dans phpinfo que GD est bien activé et dans le fichier
d:\easyphp1-8\apache\php.ini
que extension=php_gd2.dll est bien sans ; au début

signaler à un administrateur
Commentaire de Benz8 le 08/11/2008 17:33:42

et avidement il y a ; au début de  php_gd2.dll j'enlève le ; ? ou ça veux dire que j'ai pas le php_gd2.dll ??
Et merci pour votre sacré temps ! ^^"

signaler à un administrateur
Commentaire de coockiesch le 08/11/2008 17:40:35

Il faut enlever le ; et redémarrer easy php :=)

signaler à un administrateur
Commentaire de Benz8 le 08/11/2008 17:50:32

c'est ce que j'ai fait et le prob cette fois c'est dans l'instruction header("Content-type: image/png"); alors j'ai allé une autre fois a php_gd2.dll et j'ai fais la même chose avec extension=php_filepro.dll , je crois qu'il a un problème avec la gestion de type d'image! 0,0

signaler à un administrateur
Commentaire de Benz8 le 08/11/2008 17:53:44

mais le problème reste malgré que je recu comme un code ascII de l'image avec un accée directe!!

signaler à un administrateur
Commentaire de coockiesch le 08/11/2008 17:54:21

Désolé, pas compris ton dernier message...

signaler à un administrateur
Commentaire de Benz8 le 08/11/2008 17:59:56

quand j'ai enlever le ; dans le début de php_gd2.dll et j'ai redémarrer le easyphp il apparaitra un nouveau problème (erreur) au niveau de ligne header("Content-type: image/png");        
le message d'errer etait :
Warning: Cannot modify header information - headers already sent by (output started at d:\easyphp1-8\www\fr\membre\anti_spam.php:1) in d:\easyphp1-8\www\fr\membre\anti_spam.php on line 92

signaler à un administrateur
Commentaire de coockiesch le 08/11/2008 18:04:31

Es-tu sûr que le <?php du fichier anti_spam.php est bien à la toute première ligne du fichier et sans espace avant?
Qu'y a t il à la première ligne de ton fichier?

signaler à un administrateur
Commentaire de Benz8 le 08/11/2008 18:21:17

ça bien marché, merci bcp coockiesch. bonne journée.

signaler à un administrateur
Commentaire de coockiesch le 08/11/2008 18:23:55

Pas de soucis! :)
Bonne soirée!

signaler à un administrateur
Commentaire de lanner le 09/11/2008 01:12:50 10/10

Bonjour tout le monde,

Cela fait un moment que je n'ai pas retesté le script :) Est il toujours efficace contre le spam bots ?

merci

signaler à un administrateur
Commentaire de Benz8 le 10/11/2008 00:16:46

de mon coté je le trouve marche bien, vraiment pas mal du tous!
Merci.

signaler à un administrateur
Commentaire de JHT le 17/11/2008 00:20:18

Bonjour Super ce source, mais j'ai un petit problème :
je fais une verif en javascript de $_SESSION('livreord'] et j'ai un coup de retard l'image est en dephasage Ancien IMAGE = ZERT Nouvelle FGFG et dans le script il me done pour $_SESSION ZERT

Voici le formulaire

<p><form name="Demande" onsubmit="return validation();" action="./mail.php" target="mainFrame" ENCTYPE="multipart/form-data" method="POST">
<table height="462">
<tr>
<td width="81"><font color="#ff0000">*</font>Nom</td>


et le javascript qui verifie (dans la même page

function validation()
{
var aspam = '<? echo $_SESSION['livreor']; ?>'

var email = document.Demande.email.value;
var nom = document.Demande.from.value;
var vspam = document.Demande.spam.value;
var ville = document.Demande.ville.value;
var prenom = document.Demande.prenom.value;
var verif = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,3}$/

if (verif.exec(email) == null)
{
alert ("Votre email est incorrecte");
onLoad=document.forms['Demande'].elements['email'].focus();
return false;
}
else
{
alert(aspam);
alert(vspam);
if( aspam != vspam)
{
alert ("Le code rentré est faux");
return false;
}
if (nom=="")
{
alert ("Votre nom est obligatoire");
    onLoad=document.forms['Demande'].elements['from'].focus();
return false;
}
if (prenom=="")
{
alert ("Votre prénom est obligatoire");
    onLoad=document.forms['Demande'].elements['prenom'].focus();
return false;
}
if (ville=="")
{
alert ("Votre ville est obligatoire");
    onLoad=document.forms['Demande'].elements['ville'].focus();
return false;
}

return true;
}


}
</script>

Merci d'avance de vos idée

A+
<td width="430"><input type="text" name="from" size="40" maxlength="40"></td>
</tr>

<tr>
<td><font color="#ff0000">*</font>Prénom</td>
<td><input type="text" name="prenom" size="40" maxlength="40"></td>
</tr>

<tr>
<td><font color="#ff0000">*</font>Ville</td>
<td><input type="text" name="ville" size="40" maxlength="40"></td>
</tr>

<tr>
  <td>Portable</td>
  <td><input type="text" name="Portable" size="40" maxlength="40" id="Portable" /></td>
</tr>
<tr>
  <td>Tél.Domicile</td>
  <td><input type="text" name="Telephone" size="40" maxlength="40" id="Telephone" /></td>
</tr>
<tr>

<td><font color="#ff0000">*</font>E-mail</td>

<td><input type="text" name="email" size="60"  maxlength="60"></td>
</tr>

<tr>

<td>Sujet</td>

<td><input type=text name = "sujet" size="30"></td>
</tr>

<td>Votre message</td>

<td><textarea name="message" rows="4" cols="50" wrap=virtual></textarea></td>
</tr>

<tr>

<td>Document</td>

<td><input type="file" name="monfichier"></td>
</tr>

<tr>

<td height="177" colspan="2" align="center"><table width="500" border="0">
    <tr>
      <th scope="col"><span class="Style1">Merci de bien vouloir tapez les caract&egrave;res de l'image dans la zone</span></th>
      <th scope="col">&nbsp;</th>
      <th scope="col"><input type="text" name="spam" size="4" maxlength="4" id="spam" /></th>
      <th scope="col"><img src="anti_spam.php?name=livreor&strlen=4" alt="anti-flood" /></th>
    </tr>
    <tr>
         <th colspan="4" scope="col"><input type="submit"  value="Envoyer" /></th>
      </tr>
  </table>
  <p>&nbsp;</p>
  </td>
</tr>
</table>
</form>

signaler à un administrateur
Commentaire de caviar le 10/04/2009 22:34:37

J'ai un bug très bizare avec firefox sur ce site
http://www.cestmonsouhait.com
Impossible de valider le captcha !! et avec IE ça marche ...
c'est comme si une nouvelle session était créée à chaque appel de la fonction ...

signaler à un administrateur
Commentaire de coockiesch le 11/04/2009 13:40:51

Salut!
   Le captcha que j'ai vu sur ton site n'est pas le mien...

Raf

signaler à un administrateur
Commentaire de speyrard le 13/04/2009 14:38:22 10/10

Rien à redire
Code bien documenté, facile à adapter

Nickel

signaler à un administrateur
Commentaire de JohnVass le 19/05/2009 10:04:45

Salut !

J'ai essayé d'intégrer ce système dans un site en cours dé développement dans un serveur off-line, mais l'image ne s'affiche pas. Je n'ai droit qu'à l'affichage du "alt". Pourtant, j'ai mis le fichier anti_spam.php ( en enlevant les lignes de la version 1 car je souhaite intégrer la version 2 ) à la racine du site, avec mon formulaire. Malgré tout, je n'ai aucune image qui s'affiche ! As-tu une explication à cela ? Vu que je débute en php, il est possible que j'aie oublié un détail !

Merci !

signaler à un administrateur
Commentaire de mailliam le 24/05/2009 14:58:15

Coucou les loulous!!
moi j'ai mis ce superbe code sur mon site car j'étais harcelé par ces pu*** de robots de spam!
il fonctionne très bien, si ce n'est qu'un des robot qui propose du viagra arrive tjs à me mettre jusqu'a 11 pub par jour sur mon forum!!!  Comment il fait?! logiciel OCR? ils sont ballaises quand même!!

Mais j'ai trouvé une parade qui a l'air de bien marcher! je laisse évidement ce captcha anti spam, mais pour le lien qui renvoie à mon forum, je met comme ca:

<form method="post" action="forum.php" name=form1>

<INPUT TYPE="hidden" NAME="antispam" VALUE="000">

<A HREF="javascript:document.form1.submit()">forum</A>
</form>
de cette facon j'envoie la variable "antispam" à ma page forum.php
et dans la page je contrôle que dans la variable il y aie "000" de cette facon:

<?php
if ($antispam == "000")
{
//ok (ca veut dire que la page est chargée en passant par le lien..)
}
else
{
print "Une Erreur s'est produite!";
exit;
}
?>

donc comme le robot charge directement les pages qui ont des forums, donc ici direct forum.php sans passer par le lien, la variable antispam est vide et le formulaire ne s'affiche pas :)

signaler à un administrateur
Commentaire de coockiesch le 24/05/2009 15:37:19

Salut!
   C'est une idée! Moi j'avais rajouté plusieurs contraintes temporelles en me disant qu'un humain pouvait difficilement taper un message en moins de 2 secondes, ... Je pense que tu peux aussi détecter le nombre de liens dans le message, etc...

Raf

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

:::::: URGENT !!! ENVOI D'IMAGE PAR FTP !!!! ERREUR :::::: [ par kkz_mil3k ] j'essaie d'nevoyer un fichier image gif ou jpg sur un ftp via ce formulaire php :------------------------------------------- //**connecte au ftp sc Comment insérer un champs image ds ma table ?? [ par inceV ] Salut à tous et bonne année 2002 !!!Bon, je n'arrive pas à créer un champs 'image' ds ma table et je ne comprends pas tp commen ça marche, pourriez-vo Faire unr image sur le serveur en PHP [ par fabiin ] Salut !En ASP, il y a un composant ki permet de créer une image sur le serveur,...on peu avec 2-3 ligne de codes, faire un dégradé, mettre du texte, e Insérer une image dans une autre [ par cduf ] Je sais créer une image (compteur) avec des commandes php GD, mais comment l'insérer dans une autre (bannière). Merci de m'aider.Email : cdufetelle@wa envoyer une image dans le $message de mail() [ par linov ] Bonjour,Comment faire pour envoyer une image dans le $message envoyé par la fonction mail() ?Syntaxe ? Paramètres ? Est-ce possible ?Merci de votre ai include image [ par erich10 ] comment faire un include d'une image ?et comment faire en plus un lien sur cette image?merci générer des miniatures avec gd 1.6 [ par vegetaline ] muhaha alors là c'est rigolo, un super défi pour les programmeurs fous!ok j'ai le code pour générer des miniatures grâce au php, mais ça marche qu'ave MySQL et images [ par Marneus Calgar ] SalutJ'aimerais savoir s'il est possible de stocker des images dans une table MySQL et d'y accéder depuis une page PHP. En fait, je voudrais faire un MySQL et images [ par Marneus Calgar ] SalutJ'aimerais savoir s'il est possible de stocker des images dans une table MySQL et d'y accéder depuis une page PHP. En fait, je voudrais faire un Ne pas afficher la barre de Menu Image [ par microdav ] Bonjour à vous Internaute,je vous soumets une petite question...Je recherche Code permettant de ne pas faire afficher la barre de menu "Image" sur une


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,702 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.