image généré probleme actualisation lors d'un 2e passage

Eléphant du PHP | 77 Messages

19 oct. 2005, 03:49

bonjour

j'ai crée un formulaire avec une image de verification.

Une fois le formulaire validé, jai une 2e page php qui controle les erreurs possibles avant d'insérer, et qui propose un lien pour retourner au formulaire en cas d'erreur.

le probleme est que l'image généré n'est pas rafrachi si la personne retourne sur la page du formulaire .

donc j'ai essayé de mettre au debut du formulaire php

ceci :
<?php
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");
?>
mais cela ne fait rien sur le cache pour l'image donc :x


voici mon code pour generer image (qui marche)

<?php 

/*register the session variable. */
session_register('new_string');

$im = ImageCreate(100, 40); 

sscanf("EEE8AA", "%2x%2x%2x", $red1, $green1, $blue1);
$white = ImageColorAllocate($im, $red1, $green1, $blue1);
sscanf("1E90FF", "%2x%2x%2x", $red2, $green2, $blue2);
$black = ImageColorAllocate($im, $red2, $green2, $blue2);

srand((double)microtime()*1000000); 
$string = md5(rand(0,9999)); 
$new_string = substr($string, 17, 5);

ImageFill($im, 0, 0, $black);

ImageString($im, 4, 5, 19, $new_string, $white);

ImagePNG($im, "verify.png");
ImageDestroy($im); 

echo "<tr>";

echo "<td>";
echo "<p>";
echo "Type the code you see in the image in the box.(case sensitive)";
echo "</p>";
echo "<center>";
echo "<img src=\"verify.png\">";
echo "</center>";
echo "</td>";

echo "<td>";
echo "<center>";
echo "<input name=\"random\" type=\"text\" value=\"\">";
echo "</center>";
echo "</td>";

echo "</tr>";
?>
merci d'avance de votre aide
Modifié en dernier par drelb le 19 oct. 2005, 04:10, modifié 1 fois.

Mammouth du PHP | 1885 Messages

19 oct. 2005, 03:51

Ajoute une chaine aléatoire après le nom de l'image:
echo '<img src="verify.png'.time().'">';
Ceci forcera le rafraichissement de la page étant donné que le nom semble être "changé" pour la navigateur alors que l'image reste bel et bien la même.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphant du PHP | 77 Messages

19 oct. 2005, 04:15

j'ai écouté ton conseil et je te remercie de ton aide

donc j'ai du faire deux modifications dans le script que j'ai donné


ImagePNG($im, 'verify'.time().'.png');

echo '<img src="verify'.time().'.png">'; 

et cela marche bien mais le seul probleme maintenant cela genere des images avec differents noms sur l'espace disque , tres couteux en espace, à la place de s'écraser sur le meme nom .

donc :x la je vois pas trop comment regler ce nouveau probleme

Mammouth du PHP | 1885 Messages

19 oct. 2005, 04:27

Il faut ajouter l'appel à time() seulement lors de l'affichage HTML et non dans la fonction imagepng().

Essaie et tu verras ;)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphant du PHP | 77 Messages

19 oct. 2005, 12:33

j'avais essayé sans

justement si je le rajoute pas dans la fonction cela ne fonctionne pas .

Et c'est donc la raison pour laquel je l'avais rajouté.

Mammouth du PHP | 1885 Messages

19 oct. 2005, 15:13

Erreur de ma part:
echo '<img src="verify.png?'.time().'">';
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphant du PHP | 77 Messages

19 oct. 2005, 15:29

cela marche bcp mieux :) et je comprends que tu puisses faire une erreur à 3h du matin huhu

je te remercie beaucoup de ton aide :)

a bientot

drelb