Texte dans une image

Eléphant du PHP | 227 Messages

11 févr. 2006, 12:28

Bonjour,

voici mon problème:
<?php
session_start();
$chiffre = rand(120000,600000); // Chiffre aléatoire
$_SESSION['chiffre'] = $chiffre; // Mise en session du chiffre

header ("Content-type: image/png");
$im = imagecreate (70, 20);   
$background_color = imagecolorallocate ($im, 150, 100, 120);
$text_color = imagecolorallocate ($im, 255, 255, 255);
imagestring ($im, 4, 10, 2,  $_SESSION['chiffre'], $text_color);
imagepng ($im);
?>
Cela à pour but de m'afficher un numéro aléatoire dans une image, et cela fonctionne. Mais si je rajoute
<?php echo $_SESSION['chiffre'] ?>
en dessous il devrait m'afficher également les numéros en dehors de l'image, mais ce n'est pas le cas.

De quoi cela peut-il provenir ?

Merci

:lol:
Modifié en dernier par gesualda le 11 févr. 2006, 13:53, modifié 1 fois.

Mammouth du PHP | 19672 Messages

11 févr. 2006, 13:03

Parce que le fichier en question génère une image, pas une page html. Il faut donc procéder différemment. Tu as besoins de deux fichiers:
- Une page php qui va créer la page HTML : affiche_captcha.php;
- le fichier qui va générer l'image captcha.php;
Ça donne ceci:

affiche_captcha.php
<?php
session_start();
$chiffre = rand(120000,600000); // Chiffre aléatoire
$_SESSION['chiffre'] = $chiffre; // Mise en session du chiffre
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Affichage d'une image générée</title>
<meta http-equiv="Content-type" content="image/png" />
</head>
<body>
<img src="./captcha.php" alt="" />
<?php
echo("<p>". $_SESSION['chiffre'] ."</p>");
?>
</body>
</html>
captcha.php
<?php
session_start();
$im = imagecreate (70, 20);   
$background_color = imagecolorallocate ($im, 150, 100, 120);
$text_color = imagecolorallocate ($im, 255, 255, 255);
imagestring ($im, 4, 10, 2,  $_SESSION['chiffre'], $text_color);
imagepng ($im);
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 227 Messages

11 févr. 2006, 13:29

Salut Cyrano,

merci d'avoir répondu aussi vite, mais en appliquant cela, en fait la valeur de
$_SESSION['chiffre']
n'apparait plus dans le l'image et moi j'aimerai que les chiffres soit également dans l'image en plus d'etre à l'extérieur :oops:

Mammouth du PHP | 19672 Messages

11 févr. 2006, 13:34

:shock: Le code que j'ai proposé fonctionne pourtant chez moi et j'ai d'une part la série de chiffres dans l'image et d'autre part la même série inscrite en dessous...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 227 Messages

11 févr. 2006, 13:50

En fait l'image est créé avec la couleur de fond sans problème, la variable de session s'affiche bien en dessous, mais absoument pas dans l'image proprement dite.
c'est bizarre ce truc !

Eléphant du PHP | 227 Messages

11 févr. 2006, 13:53

Désolé Cyrano, :oops: :oops: j'avais oublié d'enregistrer le fichier, donc non reconnu et il gardait la valeur d'avant.
Ca fonctionne maintenant.

Merci beaucoup de ton aide

@ bientot 8)