php session 跨页面出问题

a.php文件session_start();$_SESSION['name']='henosteven';echo$_SESSION['name'];echo'<br/... a.php文件
session_start();
$_SESSION['name']='henosteven';
echo $_SESSION['name'];
echo '<br /><a href="b.php?'.SID .'">b</a>"';
b.php文件
session_start();
echo $_SESSION['name'];
1-----执行a.php后,立即执行b.php,提示Undefined index
2-----执行a.php后,点击超链接,b.php文件中正常输出
3-----超链接中,若是没事SID。b.php页面也没有输出,Undefined index

不知是何原因,新手上路,困扰已久,请各位大侠帮帮忙,急急急

补充:
在我自己设置的session保存路径中,运行a.php时候会出现一个文件,运行b.php又会出现一个文件(这个文件是空的 显示是OKB)。
展开
 我来答
gaodu13
2011-08-10 · TA获得超过422个赞
知道小有建树答主
回答量:148
采纳率:100%
帮助的人:124万
展开全部
问:我用session_register()注册了session变量,可是当我用header或用javascript的重定向语句,那么在一下页面中,我却访问不到session所注册的变量值。请问如何解决?
问题的程序片段:
session_start();
$ok = ‘love you’;
session_register(‘ok’);
header("location : next.php");
?>

next.php
session_start();
echo $ok;
?>

解决的方法:
当你用header函数或window.location这样的功能后,你上一个页面所注册的session变量,就会容易的丢失,关于这个问题的原因,至今仍没有一个详细的回答。
不过有解决的方法,由于服务器通过SessionID来读取Session的数据,只需要先获取SessionID就能解决问题。如下所示
header("Location: next.php" ."?" . SID);
在跳转到下一页面的时候,将session的当前id做为一个参数,传到后一个页面。
更多追问追答
追问
那如果不跳转呢,是不是就不行了
即。运行了a.php之后
接着运行了b.php , 而不是通过链接来打开b.php
追答
服务器通过SessionID来读取Session的数据,但是一般浏览器传送的SessionID在浏览器关闭后就没有了,那么我们只需要人为的设置SessionID并且保存下来,就可以…… 
首先需要了解一下php.ini关于Session的相关设置(打开php.ini文件,在“[Session]”部分):
1、session.use_cookies:默认的值是“1”,代表SessionID使用Cookie来传递,反之就是使用Query_String来传递;
2、session.name:这个就是SessionID储存的变量名称,可能是Cookie,也可能是Query_String来传递,默认值“PHPSESSID”;
3、session.cookie_lifetime:这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……
4、session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除!

如果你拥有服务器的操作权限,那么设置这个非常非常的简单,只是需要进行如下的步骤:
1、把“session.use_cookies”设置为1,打开Cookie储存SessionID,不过默认就是1,一般不用修改;
2、把“session.cookie_lifetime”改为正无穷(当然没有正无穷的参数,不过999999999和正无穷也没有什么区别);
3、把“session.gc_maxlifetime”设置为和“session.cookie_lifetime”一样的时间;
设置完毕后,打开编辑器,输入如下的代码:
------------------------------------------------------------------------------------

------------------------------------------------------------------------------------
然后保存为“session_check.php”,用浏览器打开“session_check.php”,看看显示的是不是“1”,再关闭浏览器,然后再打开浏览器访问“session_check.php”,如果显示“2”,那么恭喜了,你已经成功;如果失败的话,请检查你前面的设置。
这时候你想运行a.php或b.php都没问题,都可以取到session。
leiqing97
2011-08-09 · 超过27用户采纳过TA的回答
知道答主
回答量:109
采纳率:0%
帮助的人:84.4万
展开全部
SID你是重那来的啊? 你首先要定义sid $sid=""; echo "<br/><a href="b.php?".$sid."""; 你这样试试~
追问
我没说清楚,echo 'b"';  这种写法是可以的,少了SID就不行了,意思是说,我现在的情况是,必须要有SID,但是php手册上说,直接
echo 'b'; 也行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
独孤本玉
2011-08-09
知道答主
回答量:29
采纳率:0%
帮助的人:23.6万
展开全部
检查cookie是否被禁用
追问
没有,我用firefox    cookie没有禁用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-08-10
展开全部
A.PHP 和B.php 是否在同一个域下?
追问
是的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式