PHP的SESSION跨页面传递丢失的问题

近来有网友问我PHP的SESSION跨页面传递丢失的问题。在这里总结一下PHP的SESSION跨页面传递问题的解决方案。注意我们下面涉及到的配置均位于PHP.ini 文件,这个文件在WINDOWS下位于C:\WINDOWS\php.ini 可以用UltraEdit将其打开并逐个检索定位。
None.gif
None.gif首先 确定PHP的SESSION是保存在文件中的。当然大家都知道PHP可以采用用户自定义处理方式进行处理以期达到跨主机共享的目的,这个我们今天不讨论。
None.gif
None.gifsession.save_handler = files
None.gif
None.gif其次 确保记录SESSION在服务器上的保存目录拥有可写的权限。我们在第一步已经指定了SESSION在服务器端以文件形式保存那么它在服务器上肯定就会写在一个文件中。我们要给这个目录足够的权限写入。
None.gif
None.gif;session.save_path = "/tmp"(去掉前面的;并指定一个IIS进程用户拥有读写权限的目录)
None.gif
None.gif第三  确保记录SESSIONID的COOKIES能够被页面得到,不至于每刷新一次SESSIONID就更换一个。这里主要涉及到两个配置,另外这里还隐含了 另外一个问题,一个站点能够保存的COOKIES是有限的,所以当你的站点使用的COOKIES过多时候记录SESSIONID的COOKIES有可能被 浏览器丢弃,这里就要求程序员最好将跨页面的变量尽量保存在SESSION传递。
None.gif
None.gifsession.cookie_path = /(能够读取到COOKIES的目录)
None.gif
None.gifsession.cookie_domain =(能够读取到COOKIES的域名,建议为空)
None.gif
None.gif第四 保证记录SESSIONID的COOKIES不会被提前销毁,COOKIES是有存活时间的,在PHP的配置文件中同样也给出了默认的时间限制。
None.gif
None.gif; Lifetime in seconds of cookie or, if 0, until browser is restarted.
None.gifsession.cookie_lifetime = 999999999
None.gif
None.gifsession.gc_maxlifetime = 999999999
None.gif
None.gifsession.cache_expire = 999999999
None.gif
None.gif经过以上四步的配置基本上就没问题了,但是页面的调用时候同样可能会出现问题。
None.gif
None.gif在PHP5中建议使用 session_start(); 来开启回话而后SESSION变量统一放置在 $_SESSION 变量中使用方法无异与普通变量。

转载于:https://www.cnblogs.com/lovening/archive/2010/09/20/1831406.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值