代码学堂(uxuew.cn)提供付费解决PHP WEB开发等技术服务,如果需要请 点击加我QQ:1662935793.
>编程开发 > php教程 > php实现多个二级域名间session共享方法总结

php实现多个二级域名间session共享方法总结

php教程 围观1768次 更新日期:2017-06-21 22:17:10 留下足迹

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多域名共享的三个方法总结:

(1) 使用session_set_cookie_params()方法:

           session_set_cookie_params(0, '/','uxuew.cn',false,true);

(2)利用php.ini 的session.cookie_domain

1 <?php
2 ini_set("session.cookie_domain",'uxuew.cn');//注:该参数必须在sesson_start()之上,否则将不会生效
3 session_start();
4 $_SESSION['user_name']='xiaoming';
5 echo $_SESSION['user_name'];
6 ?>

(3)利用COOKIE存放session_id();

 
域名一文件php代码:

1 <?php
2 session_start();
3 setcookie("session_id",session_id(),time()+3600*24*365*10,"/",".uxuew.com");
4 $_SESSION['user_name']='hello';
5 echo $_SESSION['user_name'];
6 ?>

域名二文件php代码:

1 <?php
2 session_destroy();
3 session_id($_COOKIE['session_id']);
4 session_start();
5 echo $_SESSION['user_name'];
6 ?>

下面是两个需要注意的问题:

1、ini_set("session.cookie_domain",'uxuew.cn');必须放在session_start()之前,否则无效
2、在某些网站测试的时候必须得注意,或许你本地没有问题,但是在其他机器上或者服务器上有问题,那么你需要检查ini_set("session.cookie_domain",'session.com');这个中的session.com中必须与你的域名 进行真实匹配!不然你的部分session值将会出现问题的!

转载请注明:代码学堂>编程开发 > php教程 > php实现多个二级域名间session共享方法总结

喜欢 (365) or 分享 (235)