a.php:<?php
header("Content-type: image/png");
$im = @imagecreate(110, 20)
or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
$str="A Simple Text String";
imagestring($im, 1, 5, 5, $str , $text_color);
imagepng($im);
imagedestroy($im);session_start();
$_SESSION["AA"]=$str;//我想输出图片里的字符串值,用来做验证码,但session有问题了
?>b.php:<?php
session_start();
echo "<img src=\"a.php\" />";
//require("a.php");//用require就不能输出内容
/*$s=session_encode();//第一次没有值,测试需改下'AA'
echo $s;*/
echo $_SESSION["AA"];//问题:第一次运行b.php时获取不到值,第二次才行,为什么?怎么能马上有值?
?>
header("Content-type: image/png");
$im = @imagecreate(110, 20)
or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
$str="A Simple Text String";
imagestring($im, 1, 5, 5, $str , $text_color);
imagepng($im);
imagedestroy($im);session_start();
$_SESSION["AA"]=$str;//我想输出图片里的字符串值,用来做验证码,但session有问题了
?>b.php:<?php
session_start();
echo "<img src=\"a.php\" />";
//require("a.php");//用require就不能输出内容
/*$s=session_encode();//第一次没有值,测试需改下'AA'
echo $s;*/
echo $_SESSION["AA"];//问题:第一次运行b.php时获取不到值,第二次才行,为什么?怎么能马上有值?
?>
因为浏览器访问a.php又把值改了
ajax应用,也是,将用户填入的信息,发送给服务器端,服务器端跟SESSION比对,返回对或者不对ajax没那么难,网上搜个例子,看看也就会了
有ajax的文档吗? 发个给我行吗[email protected]
在b中赋值一个session值 $_SESSION["AA"]="test";//这个可以随机
a.php中<?php
session_start();
header("Content-type: image/png");
$im = @imagecreate(110, 20)
or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
$str=$_SESSION["AA"];//注意
imagestring($im, 1, 5, 5, $str , $text_color);
imagepng($im);
imagedestroy($im);
?>
其实按照你的那个做法,完全没必要在b.php输出验证码的值,下次发送的时候(session已经存在),
比对一下用户的值和验证码的值就可以了.
<?php
session_start();
echo "<img src=\"a.php\" />";
echo $_SESSION["AA"];//页面地一次执行时,还没有运行a.php,这里当然没有值了。第二次执行的时候实际上得到的都是前一次的值。如果这个值是随机的,那得到的就不是当前正确的值了。//实际上,你用验证码,这里并不需要得到该值,而是用户提交后去获取该值并验证。当然用ajax也可以,但无论是提交还是AJAX实际上都是第二次请求。
?>