主机:win2003
php版本:5.0.5
两个PHP文件,1.php和2.php
1.php
<body>
<p>
<?php
session_start();
$welcome="hello world !";
session_register("welcome");//注册$welcome变量,注意没有$符号
if(session_is_registered("welcome"))//检查$welcome变量是否注册
echo "welcome变量注册成功!";
else
echo "welcome变量注册失败!";
?>
<p>
<a href="2.php">
2.php
</a>
</p>
</body>
2.php
<body>
<p>
<?php
session_start();
$welcome=$_SESSION["welcome"];
echo "welcome=".$welcome."<br>";
?>
</p>
<p>
<a href="1.php">1.php</a>
</p>
</body>
进行1.php页面,在1.php里显示是“welcome变量注册成功!”,说明变量"welcome"是注册成功的,同时在C:PHPsession_temp文件夹下有
临时文件出现。点击1.PHP里的链接进入2.php(同一个浏览器窗口下操作),可以看到变量“welcom”的值等于"hello world !"。
出现问题:
进入1.php页面,在1.php里显示是“welcome变量注册成功!”,但是如果这时再开一个浏览器窗口,把2.php的地址输入进去,这里2.php页面上的"welcom"值是空的,难道SESSION不能跨窗体传递变量?
有一个方法就是设置COOKIE,
在1.php里的:
session_register("welcome");
语句后面加上
setcookie("PHPSESSID",session_id(),time()+3600,"/","
www.myweb.com");
就可以解决这个问题。(但是只能使用一次,也就是说如果连续开两个窗口,都访问2.php,只有第一个可以,第二个就不行了,查看IE临时文件夹,COOKIE已经销毁了,郁闷~)