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.

 

可見 ,域名是從三級域名算起的, 如果二級域名相同,三級域名不同, 那么就算作是不同的主機.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM