我的php.ini中的session配置如下:
session.save_handler = files
session.save_path = E:/Apache Group/Apache2/temp
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 1
session.cookie_path = E:/Apache Group/Apache2/temp
session.serialize_handler = php
session.use_trans_sid = 1
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
session.save_handler = files
session.save_path = E:/Apache Group/Apache2/temp
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 1
session.cookie_path = E:/Apache Group/Apache2/temp
session.serialize_handler = php
session.use_trans_sid = 1
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
解决方案:
1 在客户端 开启 cookie 支持。
在 page1 里,把 session id 的值写入 Cookie 中。一般Cookie 名为 PHPSESSID
2 在用 js 跳转时,手工给 URL 添加 PHPSESSID=session_id()修改:
echo "<script languge=Javascript>window.location='page2.php?PHPSESSID=".session_id()."';</script>";
改成
<?php
session_start();
session_id($_GET['sid']);
$username=$_SESSION['uname'];
$userpwd=$_SESSION['upwd'];
echo $username."<br>";
echo $userpwd."<br>";
?>应该就行了。~~~
PHP的session是通过cookie或者url来传递的,你可以改成这样
page1.php
...
echo "<script languge=Javascript>window.location='page2.php?PHPSESSID='".$sid."';</script>";page2.php
$_COOKIE['PHPSESSID'] = $_REQUEST['PHPSESSID'];
...
我的客户端已经开启了cookie支持,且跳转后ie地址栏已经显示为:
http://localhost/test/liuyan/page2.php?PHPSESSID=b23d544218979bde583c9b8c3e8ff570
可是效果依旧,真是有点怪了
回复mrshelly(Shelly):换成如下:
<?php
session_start();
session_id($_GET['sid']);
$username=$_SESSION['uname'];
$userpwd=$_SESSION['upwd'];
echo $username."<br>";
echo $userpwd."<br>";
?>
还是不行,我查过相关的说明,说session_id()必须在session_start()之前,是这样吗?
请您再查一下,现时也请其他高手指教
诚挚的感谢各位高手的回复,谢谢你们
谢谢您好,按照您的方法,我成功了,不过其具体原理我不太明白,你能稍微讲解一下吗,还有如果能不用这种方法,而直接在程序中使用$_SESSEION中的变量,该怎么设置啊,如果您能再指点一下的话,本人将更不胜感激,同时也请其他各位高手不吝指教
谢谢各位
等价于在浏览器地址栏键入地址,并不是所有的浏览器都能识别并传递cookie的。所以出现了你说的问题。
其实只需写做
window.location.replace('page2.php')
就可以了,附加的好处还有这个page2.php不会出现在历史记录中
换为window.location.replace('page2.php')
我测试了一下不行,效果与没改动一样,而且本人认为这种方式也不能实现从一个页面弹出多个页面的问题,但是仍然要感谢位兄弟,然而,还请那位高手指点一下:不明确指定session_id,像上面使用$sid明确指定的方法就能使用$_session[]数组中的变量,这好像要在php.ini中进行相关的设置吧,请指教