Bonjour a tous,
voila j'ai codé un système de génération de captcha avec GD et un fichier capcha.php (qui est considéré comme une image .png).
Je fais passer le code par SESSION entre la page capcha.php et inscription.php.
Le problème est que il y a un décalage entre l'image et la variable.
La première fois que l'on charge la page la variable session['capcha'] n'a pas de valeur et une image avec un code apparait.
Mais lorsqu'on recharge le page elle possède la valeur de l'image de la page précédente et il y a une nouvelle image.
D’où vient le problème?
Voici mon code:

capcha.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
session_start();
 
function nombre()
{
  $chaine = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$nb_caract = 6;
$pass = "";
 
for($u = 1; $u <= $nb_caract; $u++) {
 
    $nb = strlen($chaine);
 
    $nb = mt_rand(0,($nb-1));
 
 
    $pass.=$chaine[$nb];
}
return $pass;
}
 
function image($mot)
{
	$size = 20;
	$marge = 30;
	$font = './face.OTF';
 
	$box = imagettfbbox($size, 0, $font, $mot);
	$largeur = $box[2] - $box[0];
	$hauteur = $box[1] - $box[7];
	$largeur_lettre = round($largeur/strlen($mot));
 
	$img = imagecreate($largeur+$marge, $hauteur+$marge);
	$blanc = imagecolorallocate($img, 255, 255, 255); 
	$noir = imagecolorallocate($img, 0, 0, 0);
 
	for($i = 0; $i < strlen($mot);++$i)
	{
		$l = $mot[$i];
		$angle = mt_rand(-10,10);
		imagettftext($img,$size,$angle,($i*$largeur_lettre)+$marge, $hauteur+mt_rand(0,$marge/2),$noir, $font, $l);	
	}
 
	imagepng($img);
	imagedestroy($img);
}
 
function captcha()
{
    $mot = nombre();
    $_SESSION['capcha'] = $mot;
    image($mot);
}
 
header("Content-type: image/png");
captcha();
?>
inscription.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<img src="images/capcha.php"  alt="capcha" />
<?php $capchareel=$_SESSION['capcha']; echo $capchareel;?>
Merci d'avance pour votre aide