2009-09-07 8 views
0

J'essaie d'ajouter un captcha à un site que quelqu'un d'autre a fait. Je suivais tutoriel this et si je le fais dans un fichier séparé, il fonctionne très bien (donc ce n'est pas un problème avec la configuration du serveur)J'ai des problèmes avec captchas et en-têtes (PHP)

Cependant, lorsque j'essaie de l'ajouter à une page existante, ça ne marche pas du tout. Quand je charge la page dans Internet Explorer, le code source est affiché avec des caractères aléatoires où l'image aurait été affichée comme:

‰PNGIHDRé1°8ö[IDATxœÍ]kp×u>»X‹± (4 ›–9¦:‰-C£V™©4–[ÓL•4“Dm~„njR3ª]*qÒÚ‰£ŽãD–&~Ô±ØØŽ$ 

Dans Firefox, je reçois le message: L'image « myurl » ne peut pas être affichée , parce qu'il contient des erreurs.

Je suppose que c'est quelque chose à voir avec les en-têtes, mais je ne suis pas vraiment sûr.

C'est le code que je utilise pour créer l'image:

$md5 = md5(microtime() * mktime()); 
$string = substr($md5,0,5); 
$captcha = imagecreatefrompng("./captcha.png"); 
$black = imagecolorallocate($captcha, 0, 0, 0); 
$line = imagecolorallocate($captcha,233,239,239); 
imageline($captcha,0,0,39,29,$line); 
imageline($captcha,40,0,64,29,$line); 
imagestring($captcha, 5, 20, 10, $string, $black); 
$_SESSION['key'] = md5($string); 
header("Content-type: image/png"); 
imagepng($captcha); 

Tout conseil serait grandement apprécié. Merci.

Répondre

4

Ces caractères aléatoires sont en fait le contenu d'un fichier PNG.

En fait, vous videz les données PNG dans votre fichier HTML au lieu de créer un lien avec une balise <img>.

Vous devez mettre le code dans son propre fichier et l'intégrer comme ceci:

<img src="image.php">