PHP实现同服务器多个二级域名共享 SESSION 数据
说这个问题之前,先来了解一下 PHP SESSION 的工作原理。在客户端(如浏览器)登录网站时,被访问的 PHP 页面可以使用 session_start() 打开 SESSION,这样就会产生客户端的唯一标识 SESSION ID(此 ID 可通过函数 session_id() 获取/设置)。SESSION ID 可以通过两种方式保留在客户端,使得请求不同的页面时,PHP 程序可以获知客户端的 SESSION ID;一种是将 SESSION ID 自动加入到 GET 的 URL 中,或者 POST 的表单中,默认情况下,变量名为 PHPSESSID;另一种是通过 COOKIE,将 SESSION ID 保存在 COOKIE 中,默认情况下,这个 COOKIE 的名字为 PHPSESSID。这里我们主要以 COOKIE 方式进行说明,因为应用比较广泛。
SESSION 的数据是保存在服务器端的文件或数据库中。默认情况下,php.ini 中设置的 SESSION 保存方式是 files(session.save_handler=files),即使用读写文件的方式保存 SESSION 数据,而 SESSION 文件保存的目录由 session.save_path 指定,文件名以 sess_ 为前缀,后跟 SESSION ID,如:sess_c72665af28a8b14c0fe11afe3b59b51b。文件中的数据即是序列化之后的 SESSION 数据了。如果访问量大,可能产生的 SESSION 文件会比较多,这时可以设置分级目录进行 SESSION 文件的保存,效率会提高很多,设置方法为:session.save_path=”N;/save_path”,N 为分级的级数,save_path 为开始目录。当写入 SESSION 数据的时候,PHP 会获取到客户端的 SESSION_ID,然后根据这个 SESSION ID 到指定的 SESSION 文件保存目录中找到相应的 SESSION 文件,不存在则创建之,最后将数据序列化之后写入文件。读取 SESSION 数据是也是类似的操作流程,对读出来的数据需要进行解序列化,生成相应的 SESSION 变量。
通过了解php session的工作原理,这里我们就可以有两种方法解决session共享的问题了。
(1)利用COOKIE存放session_id();
域名一文件php代码:
域名二文件php代码:
(2)利用php.ini 的session.cookie_domain
备注:这里是用php代码实现不需要修改php.ini的配置文件;如果有需要你可以在php.ini里面修改配置文件(该情况下就不需要改段代码:ini_set("session.cookie_domain",'session.com');)
域名一文件php代码:
域名二文件php代码:
下面是两个需要注意的问题:
一:ini_set("session.cookie_domain",'session.com');必须放在session_start()之前;
二:在某些网站测试的时候必须得注意,或许你本地没有问题,但是在其他机器上或者服务器上有问题,那么你需要检查ini_set("session.cookie_domain",'session.com');这个中的session.com中必须与你的域名 进行真实匹配!不然你的部分session值将会出现问题的!
您可能感兴趣的文章
- APACHE同一IP配置多个域名,Apache下同一个IP配置多个虚拟主机
- smarty模板中使用php函数以及smarty模板中如何对一个变量使用多个函数
- 如何查看同一服务器上挂有多少个网站
- 大流量网站该如何实现优化服务器、静态化、数据库优化、负载均衡以实现高负载
- mysql服务器主从数据库同步配置
- CuteFTP连接ftp服务器时弹出“遇到无效的参数”错误的解决办法
- 如何增强Linux和Unix服务器系统安全性
- 总结MySQL数据库服务器逐渐变慢的原因和解决办法
上一篇: PHP程序中使用adodb连接不同数据库的代码实例
下一篇: 兄弟连2016年PHP课程体系全面升级
推荐阅读
-
用PHP实现多服务器共享SESSION数据的方法_PHP教程
-
Zend Framework实现多服务器共享SESSION数据的方法
-
PHP实现多服务器session共享之NFS共享的方法
-
PHP实现多web服务器共享SESSION数据-session数据写入mysql数据库
-
PHP实现多web服务器共享SESSION数据_PHP教程
-
php使用memcache实现多服务器共享session
-
Zend Framework实现多服务器共享SESSION数据的方法_php实例
-
PHP实现多web服务器共享SESSION数据
-
Zend Framework实现多服务器共享SESSION数据的方法_PHP
-
Zend Framework实现多服务器共享SESSION数据的方法,zendsession_PHP教程