有3个php页面,如下:
----------------------
a.php
<?php 
//....
header("location:b.php?".SID);?>
--------------------------
b.php
<?php
//....处理session中的数据
header("location:c.php?".SID);?>
--------------------------
c.php其中a.php c.php会有输出返回到浏览器,而b.php只起到处理数据的作用,然后直接跳到c.php,问题是:b.php为何接受不到
a.php中header函数传递的SID值呢?
我在b.php中用$_GET["PHPSESSID"]来获取的,配置文件中的session name也是"PHPSESSID".谢谢。

解决方案 »

  1.   

    header("location:b.php?PHPSESSID=".SID);
      

  2.   


    我用的是php5.2.13,SID本身的格式就是PHPSESSID=sess_*************,不需要PHPSESSID了
      

  3.   

    我搞错了,SID常量不用再包含session变量名了,echo SID;输出正常吗?
      

  4.   


    正解.你得把sid的值赋给一个变量.按你的写法通过$_GET["PHPSESSID"]是获取不到的。
    你说配置文件中的session name也是"PHPSESSID".可以通过$_SESSION['PHPSESSID']进行获取。
      

  5.   

    另外,session_start()了吗?
      

  6.   


    session_start()放到第一行了
      

  7.   

    header("location:c.php?".SID);将在返回给浏览器的头部包含
    Location:url
    指令,浏览器收到该指令后就立即发起跳转动作
    在等待新页面到来时,浏览器将继续显示该页面的内容诚如你所说:b.php只起到处理数据的作用。也就是并没有输出,所以你也就感觉到 b.php 没有执行了
      

  8.   

    总结,问题解决了
    ————————
    在a.php页面中,我把session id放在了form的antion连接中,结果我在b.php中get不到。后来看了下,form中的其他字段的值竟然可以get的到,所以把session id放到form中的hidden字段中去,这样就在b.php中get到了。——————————————
    问题已经解决,但是有些不明白,form的method是get,表单中的字段在提交的时候也会同样编码在action的链接中,为何我直接编码到链接后面的值却get不到呢?
      

  9.   


    header是这个工作流程,php中有没有像jsp那种直接在服务端forward的,不需要再让客户端的browser来请求跳转的功能?