• session跨域共享解决方案


    session数据都是保存在本服务器的文件系统中,要想共享session,就必须实现两个目标:
    1:各个服务器对同一个客户端产生的sessionID必须相同,并且可以通过同一个cookie进行传递,也就是说各个服务器可以读取同一个名为session ID的cookie。
    2:存储session数据的位置/目录必须保证每个服务器都能够访问到。
    这两个目标简单来说就是:各个服务器共享同一个sessionID,各个服务器能够访问同一份session数据。
    这里有三种方式可以实现:
    1.只要在php页面的最开始(要在任何输出之前,并且在session_start()之前)的地方进行以下设置
    ini_set('session.cookie_path', '/');
    ini_set('session.cookie_domain', '.mydomain.com');
    ini_set('session.cookie_lifetime', '1800');
    2.在php.ini里设置
    session.cookie_path = /
    session.cookie_domain = .mydomain.com
    session.cookie_lifetime = 1800
    3.在php页面最开始的地方(条件同1)调用函数
    session_set_cookie_params(1800 , '/', '.mydomain.com');

    这里我用第一种方法设置,分别在www.mydomain.com和sub.mydomain.com两个域名来测试,测试代码如下
    sub1.php
    <?php
    //先访问的页面做设置
    ini_set('session.cookie_path', '/');
    ini_set('session.cookie_domain', '.mydomain.com');
    ini_set('session.cookie_lifetime', '1800');
    //
    session_set_cookie_params(1800 , '/', '.mydomain.com');
    session_start();
    $_SESSION['sub1'] = 'sub1';
    print_r($_SESSION);
    ?>
    sub2.php
    <?php
    session_set_cookie_params(1800 , '/', '.mydomain.com');
    session_start();
    $_SESSION['sub2'] = 'sub2';
    print_r($_SESSION);
    ?>
    访问顺序:
    (1)www.mydomain.com/sub1.php
    页面输出:
    Array ( [sub1] => sub1 )
    (2)sub.mydomain.com/sub2.php
    页面输出:
    Array ( [sub1] => sub1 [sub2] => sub2 )
  • 相关阅读:
    [已读]Sass与Compass实战
    微信小程序图片变形解决方法
    ES6基础教程一 学习笔记
    微信小程序图片放大预览
    Element ui表格展示多张图片问题
    Element ui表格展示图片问题
    使用element ui 日期选择器获取值后的格式问题
    在vue2.0中使用sass
    微信小程序左滑删除功能
    微信小程序用setData修改数组或对象中的一个属性值
  • 原文地址:https://www.cnblogs.com/11a22b33c/p/13375923.html
Copyright © 2020-2023  润新知