PHP中session跨子域的三种实现方法

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP中session跨子域的三种实现方法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

在之前做东西的时候session一般就直接存在数据库中这样就能解决跨域不仅仅是跨子域,但是今天遇到这个问题是,自己要在别人现有的东西上面做修改。由于仅仅是子域当时就想肯定有简单解决方法,度娘了找到了三种解决办法:

Session主要分两部分:

一个是Session数据,该数据认情况下是存放服务器tmp文件下的,是以文件形式存在。

一个是标志着Session数据的Session Id,Session ID,就是那个 Session 文件文件名,Session ID随机生成的,因此能保证唯一性和随机性,确保 Session 的安全。一般如果没有设置 Session 的生存周期,则 Session ID 存储在内存中,关闭浏览器后该 ID 自动注销,重新请求该页面后,重新注册一个 session ID。如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候扮演的是存储 Session ID Session 生存期的角色。

两个不同的域名网站,想用同一个Session,就是牵扯到Session跨域问题!

认情况下,各个服务器会各自分别对同一个客户端产生 SESSIONID,如对于同一个用户浏览器,A 服务器产生的 SESSION ID 是 11111111111,而B 服务器生成的则是222222。另外,PHP 的 SESSION数据都是分别保存在本服务器的文件系统中。想要共享 SESSION 数据,那就必须实现两个目标:

一个是各个服务器对同一个客户端产生的SESSION ID 必须相同,并且可通过同一个 COOKIE 进行传递,也就是说各个服务器必须可以读取同一个名为 PHPSESSID 的COOKIE;

一个是 SESSION 数据的存储方式/位置必须保证各个服务器都能够访问到。这两个目标简单地说就是多服务器(A、B服务器)共享客户端的 SESSION ID,同时还必须共享服务器端的 SESSION 数据。

有三种解决方法

1.只要在PHP页面的最开始(要在任何输出之前,并且在session_start()之前)的地方进行以下设置

<PRe class="brush:PHp;"> ini_set('session.cookie_path','/'); ini_set('session.cookie_domain','.mydomain.COM'); ini_set('session.cookie_lifetime','1800');

脚本宝典总结

以上是脚本宝典为你收集整理的PHP中session跨子域的三种实现方法全部内容,希望文章能够帮你解决PHP中session跨子域的三种实现方法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。