zoukankan      html  css  js  c++  java
  • php session (二): 同样的代码 ,不同域名访问 对session存储的影响.

    一:准备工作:

    位置:

    • htdocs
      • a目录:
        • sessiona.php
      • b目录
        • sessionb.php
      • c目录
        • sessionc.php

    ------

    sessiona.php

    1 <?php
    2 
    3 
    4 session_start();
    5 $_SESSION["test"] = "this is a";
    6 
    7 
    8  ?>

    -------

    sessionb.php

    1 <?php
    2 
    3 
    4 session_start();
    5 $_SESSION["test"] = "this is b";
    6 
    7 
    8  ?>

    --------

    sessionc.php

    1 <?php
    2 
    3 
    4 session_start();
    5 $_SESSION["test"] = "this is c";
    6 
    7 
    8  ?>

    -----

    a,b,c 目录分别设置了 网址. www.a.com  , www.b.com , www.c.com

    -------

    二:访问:

    2-1: localhost方式访问:

    1. 访问 localhost/a/sessiona.php

    2.访问 localhost/b/sessionb.php

     3.访问localhost/c/sessionc.php

     

     4. 查看客户端 cookie:

    结论:

    上面域名都是 localhost , 虽然在 不同的目录 下 设置 session变量. 但是 只有一个session文件.

     可见,同一个domain 下 的所有session 都保存在 一个文件中, 不能你在那个脚本中设置session

    同名的session会不断更新,  $_SESSION["test"]  的值 从 this is a --> this is b  --->this is c.

    补充: 上面说的不完整. 应该是如果 用同一个 浏览器(具体某个人的电脑上的某个浏览器) 访问一个域名, 那么这个域名下 所有 的 session变量(这个域名下不同脚本设置的session变量) 都会

            储存在一个session文件中.

       session是区分浏览器(这个指得是不只是浏览器品牌.) ,

       例如有浏览器 : 360 ,搜狗.

       不是说网站下 只有两个session文件 ,

           而是说 小明的电脑上 有 360 ,搜狗;   小花的电脑上有 360 ; 那么小明分别用 360 ,搜狗访问网站 ,小花 用 360 访问网站, 那么 网站的服务器中就会有三个 session文件.

     2-2: 不同域名的访问:

    清空原来的所有的session存储文件:

    1. 访问www.a.com/sessiona.php

    session:

     

    ----

    cookie:

     2. 访问 www.b.com/sessionb.php

    ---

    session:

     服务器端多了一个 存储 www.b.com 中的所有session的文件.

     ----

    cookie:

    当前  www.b.com 只有一个cookie .  名字是 PHPSESSID

    -----

    3.访问   www.c.com/sessionc.php

    --

    session:

    服务器端 又多了一个 session文件.

    ---

    cookie:

     ----

    结论:同样的代码只是 访问的url不同 ,产生的session也就不同.

    上面我们用了三个域名访问,  在服务器端 就生成了 三个文件 ,分别保存 这三个 域名下的 所有 session.

    ---

    上面 是域名完全不同.

    现在测试一下 二级域名相同, 三级域名不同的情况.

    • htdocs
      • a目录
        • sessiona.php
      • a1目录
        • sessiona1.php

    a目录 :  www.a.com

    a1目录: a1.a.com

    ------

    sessiona.php

    1 <?php
    2 
    3 
    4 session_start();
    5 $_SESSION["test"] = "this is a";
    6 
    7 
    8  ?>

    --------------

    sessiona1.php

    1 <?php
    2 
    3 
    4 session_start();
    5 $_SESSION["test"] = "this is a1";
    6 
    7 
    8  ?>

    ----------

    1:访问:  www.a.com/sessiona.php

     ----------

    2. 访问 a1.a.com

    -------------

    可见, 服务器端总共有两个 session文件.    www.a.com 和  a1.a.com 是不同的 domain.

    可见 ,域名是从三级域名算起的, 如果二级域名相同,三级域名不同, 那么就算作是不同的主机.

  • 相关阅读:
    太可爱了!CSS3 & SVG 制作的米老鼠钟表
    20个免费的 AngularJS 资源和开发教程
    比尔盖茨:反垄断案让我分心,不然微软定能打败安卓(胜者通吃的行业要不计代价的三班倒,评论很精彩)
    C++11 新特性之智能指针(shared_ptr, unique_ptr, weak_ptr)
    C++编译器会对没有构造函数的类生成默认构造函数吗?(有必要的时候才生成,要看情况。有反汇编验证)
    qt5信息提示框QMessageBox用法(很全)
    (RPC) Remote Procedure Call Protocol 远程过程调用协议
    分布式事务就是由多个本地事务组合而成的事务
    内存管理--虚拟内存管理技术
    NET适合搞大数据,机器学习、人工智能
  • 原文地址:https://www.cnblogs.com/cbza/p/6861688.html
Copyright © 2011-2022 走看看