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)。 展开
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)。 展开
4个回答
展开全部
问:我用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做为一个参数,传到后一个页面。
问题的程序片段:
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。
展开全部
SID你是重那来的啊? 你首先要定义sid $sid=""; echo "<br/><a href="b.php?".$sid."""; 你这样试试~
追问
我没说清楚,echo 'b"'; 这种写法是可以的,少了SID就不行了,意思是说,我现在的情况是,必须要有SID,但是php手册上说,直接
echo 'b'; 也行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
检查cookie是否被禁用
追问
没有,我用firefox cookie没有禁用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-08-10
展开全部
A.PHP 和B.php 是否在同一个域下?
追问
是的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询