我的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="

解决方案 »

  1.   

    很正常,在你的PHP.INI  里,没有设置 Js 的跳转时是否 自动加入 session id 的功能。
    解决方案:
    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>";
      

  2.   

    你后面的做法是对的。但顺序有些问题
    改成 
    <?php
    session_start();
    session_id($_GET['sid']);
    $username=$_SESSION['uname'];
    $userpwd=$_SESSION['upwd'];
    echo $username."<br>";
    echo $userpwd."<br>";
    ?>应该就行了。~~~
      

  3.   

    你用sid传递对php来说没用,PHP怎么知道你的sid就是session id呢?
    PHP的session是通过cookie或者url来传递的,你可以改成这样
    page1.php
    ...
    echo "<script languge=Javascript>window.location='page2.php?PHPSESSID='".$sid."';</script>";page2.php
    $_COOKIE['PHPSESSID'] = $_REQUEST['PHPSESSID'];
    ...
      

  4.   

    回复mrshelly(Shelly):
    我的客户端已经开启了cookie支持,且跳转后ie地址栏已经显示为:
    http://localhost/test/liuyan/page2.php?PHPSESSID=b23d544218979bde583c9b8c3e8ff570
    可是效果依旧,真是有点怪了
      

  5.   


    回复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()之前,是这样吗?
    请您再查一下,现时也请其他高手指教
    诚挚的感谢各位高手的回复,谢谢你们
      

  6.   

    回复Meteorlet(Meteorlet):
    谢谢您好,按照您的方法,我成功了,不过其具体原理我不太明白,你能稍微讲解一下吗,还有如果能不用这种方法,而直接在程序中使用$_SESSEION中的变量,该怎么设置啊,如果您能再指点一下的话,本人将更不胜感激,同时也请其他各位高手不吝指教
    谢谢各位
      

  7.   

    window.location='page2.php'
    等价于在浏览器地址栏键入地址,并不是所有的浏览器都能识别并传递cookie的。所以出现了你说的问题。
    其实只需写做
    window.location.replace('page2.php')
    就可以了,附加的好处还有这个page2.php不会出现在历史记录中
      

  8.   

    回复xuzuning(唠叨):
    换为window.location.replace('page2.php')
    我测试了一下不行,效果与没改动一样,而且本人认为这种方式也不能实现从一个页面弹出多个页面的问题,但是仍然要感谢位兄弟,然而,还请那位高手指点一下:不明确指定session_id,像上面使用$sid明确指定的方法就能使用$_session[]数组中的变量,这好像要在php.ini中进行相关的设置吧,请指教