PHP中session_start 函數詳解使用方法


一、官方 session_status() 返回值為:

 

  • PHP_SESSION_DISABLED 會話是被禁用的。
  • PHP_SESSION_NONE 會話是啟用的,但不存在當前會話。
  • PHP_SESSION_ACTIVE 會話是啟用的,而且存在當前會話。

 

session_status()

 

二、嘗試打印var_dump(session_status()); 值總為int 1

與官方描述不一樣,google it,當打印時,會顯示如此:

 

  1.  
    0 ----> PHP_SESSION_DISABLED if sessions are disabled.
  2.  
    1 ----> PHP_SESSION_NONE if sessions are enabled, but none exists.
  3.  
    2 ----> PHP_SESSION_ACTIVE if sessions are enabled, and one exists.

參考

 

 

三、思考何時返回 0 或 2 。

1、嘗試加上session_start(),打印出了2。

session_start();

var_dump(session_status()); // int 2

說明:PHP_SESSION_ACTIVE 是指使用了session_start() 啟動新會話或者重用現有會話.

2、嘗試在session_start() 后使用 session_destroy(),期望得到0。

 

session_start();

session_destroy();

var_dump(session_status()); // int 1

說明:結果輸入1,證明,現在session狀態為 “PHP_SESSION_NONE 會話是啟用的,但不存在當前會話”。

3、於是思考,當session不能用時狀態才為 “PHP_SESSION_DISABLED 會話是被禁用的”,即返回0。

於是修改php.ini session.save_handler = 'cached',重啟php,此時,有個warning,同時,返回0;

說明:只有當session 無法使用時,session_status 才返回 0.

————————————————————————————————————————————————————————

總結,要判斷是否需要使session_start()函數,可以這樣:

if(session_status !== PHP_SESSION_ACTIVE){

session_start();

}

 

if(session_status !== 2){

session_start();

}


免責聲明!

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



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