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,让他可以登录到我网站用户后台

解决方案 »

  1.   

    <img src="http://192.168.1.11/test/rand.php">
    调用方式有问题,
    或者改写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");
      

  2.   

     要跨网站登录就要加上ip啊,直接用rand.php本地是用,可是放到网上不行啊
      

  3.   

    如果rand.php和test1.php不在同一台服务器上,以你现在这样是根本读取不到的.
    rand.php执行以后将session写到本机了,
    test1.php执行以后读取的是本机,
    这当然是空的了.
      

  4.   

     rand.php和test1.php在一台服务器上,test.php是登录界面,不在我的服务器上,是给别人用的,然后远程加载验证码,(别人去我的服务器上取) 现在怀疑是第一次提交session_id没有取到 也不知道怎么解决
      

  5.   

    <img src="http://192.168.1.11/test/rand.php"> 是改这个吗
      

  6.   

      我知道问题了,我登录界面<img src="http://ip/rand.php"> 在服务器上生成了session,但是我没有访问我服务器上的页面,所以session还是没有“开始”,就是登录的时候我服务器上有这个session,但用户“第一次”登录到我的服务器,所以无法识别用户的session,所以失败,而按后退键返回登录界面后因为有了连接,所以第二次以及以后登录验证码都是成功的
      

  7.   

    这个问题可能是ie的bug
    把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访问就不会有此类问题。
      

  8.   

    lz在test.php,rand.php两个文件
    session_start()之前session_id("abc");固定死访问同一份session文件,再测试你的例子,如果一切正常,说明ie确实有此问题。