php.ini session.save_path = "C:/temp" 把sessin保存在c:/temp
代码:
test.php<form method="POST" action="http://192.168.1.11/test/test1.php">
<img src="http://192.168.1.11/test/rand.php">
<input type="submit" value="send">
</form>test1.php<?php
session_start();
$a=$_SESSION['indexLoginRand'];
echo $a;
if(empty($a)){
echo 'empty';
}
?>rand.php<?php
header("Content-type: image/PNG");
session_start();//将随机数存入session中
$_SESSION['indexLoginRand']="";
$im = imagecreate(35,15); //制定图片大小$black = ImageColorAllocate($im, 0,0,0); //设定颜色
$white = ImageColorAllocate($im, 255,255,255);imagefill($im,0,0,$white); //区域填充$authnum = rand(1000,9999);
//将四位整数验证码绘入图片
$_SESSION['indexLoginRand']=$authnum;
imagestring($im, 5, 0, -1, $authnum, $black);for($i=0;$i<100;$i++) //加入干扰象素
{
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
}ImagePNG($im);
ImageDestroy($im);
?>还是那个老问题,用ie测试第一次提交会出现echo empty的问题,我要做的是跨网站登录,验证码这里过不去了,在登录到test页面的时候c:/temp下生成了session 而且有值,但是用ie就是会echo empty,火狐正常显示数字 麻烦大家帮忙解决下,
或者给个跨网站登录的思路,需求是给对方网站一段html,让他可以登录到我网站用户后台
代码:
test.php<form method="POST" action="http://192.168.1.11/test/test1.php">
<img src="http://192.168.1.11/test/rand.php">
<input type="submit" value="send">
</form>test1.php<?php
session_start();
$a=$_SESSION['indexLoginRand'];
echo $a;
if(empty($a)){
echo 'empty';
}
?>rand.php<?php
header("Content-type: image/PNG");
session_start();//将随机数存入session中
$_SESSION['indexLoginRand']="";
$im = imagecreate(35,15); //制定图片大小$black = ImageColorAllocate($im, 0,0,0); //设定颜色
$white = ImageColorAllocate($im, 255,255,255);imagefill($im,0,0,$white); //区域填充$authnum = rand(1000,9999);
//将四位整数验证码绘入图片
$_SESSION['indexLoginRand']=$authnum;
imagestring($im, 5, 0, -1, $authnum, $black);for($i=0;$i<100;$i++) //加入干扰象素
{
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
}ImagePNG($im);
ImageDestroy($im);
?>还是那个老问题,用ie测试第一次提交会出现echo empty的问题,我要做的是跨网站登录,验证码这里过不去了,在登录到test页面的时候c:/temp下生成了session 而且有值,但是用ie就是会echo empty,火狐正常显示数字 麻烦大家帮忙解决下,
或者给个跨网站登录的思路,需求是给对方网站一段html,让他可以登录到我网站用户后台
调用方式有问题,
或者改写rand.php
以确保每次都能获取新的验证码,并且产生新的session
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");
rand.php执行以后将session写到本机了,
test1.php执行以后读取的是本机,
这当然是空的了.
把lz代码copy到本地测试了下。把ip(192.168.1.11)改成本地服务器ip,在ie下,如果用localhost作为url访问这test.php,问题和lz遇到的如出一辙,在test1.php里第一次print_r($_SESSION)为空,第二次正常,如果用本机ip访问,一切正常。到session存储目录测试了下,用localhost访问test.php,第一次进到test.php,生成了一个session文件,因为发送请求到rand.php获取了图像,这时候按提交按钮,ie下竟然又生成了另一份session文件。也就是说ie在某种情况下会认为第一次访问rand.php是一次会话,按提交后是另一次会话。firefox下就不会有此类问题。
如果用本机ip访问就不会有此类问题。
session_start()之前session_id("abc");固定死访问同一份session文件,再测试你的例子,如果一切正常,说明ie确实有此问题。