使用無限生命期Session的方法

2022-07-15 12:24:11 字數 2012 閱讀 4442

[**] 達內    [編輯] 達內   [時間]2013-03-28

session儲存在伺服器端,根據客戶端提供的sessionid來得到這個使用者的檔案,然後讀取檔案,取得變數的值,sessionid可以使用客戶端的cookie或者http1.1協議的query_string(就是訪問的url的「?」後面的部分)來傳送給伺服器,然後伺服器讀取session的目錄……

使用無限生命期session的方法

本文不敢說非常好,但是筆者相信大多數phper都曾經想過這些問題。

使用無限生命期session的方法

在php4.0中加入了對session的支援,方便了我們很多程式,比如購物車等等!

在很多論壇中,session也用於處理使用者的登陸,記錄下使用者名稱和密碼,使得使用者不必每次都輸入自己的使用者名稱和密碼!但是一般的session的生命期有限,如果使用者關閉了瀏覽器,就不能儲存session的變數了!那麼怎麼樣可以實現session的永久生命期呢?

大家知道,session儲存在伺服器端,根據客戶端提供的sessionid來得到這個使用者的檔案,然後讀取檔案,取得變數的值,sessionid可以使用客戶端的cookie或者http1.1協議的query_string(就是訪問的url的「?」後面的部分)來傳送給伺服器,然後伺服器讀取session的目錄……

1、session.use_cookies:預設的值是「1」,代表sessionid使用cookie來傳遞,反之就是使用query_string來傳遞;

2、session.name:這個就是sessionid儲存的變數名稱,可能是cookie,也可能是query_string來傳遞,預設值是「phpsessid」;

3、session.cookie_lifetime:這個代表sessionid在客戶端cookie儲存的時間,預設是0,代表瀏覽器一關閉sessionid就作廢……就是因為這個所以session不能永久使用!

4、session.gc_maxlifetime:這個是session資料在伺服器端儲存的時間,如果超過這個時間,那麼session資料就自動刪除!

還有很多的設定,不過和本文相關的就是這些了,下面開始講使用永久session的原理和步驟。

前面說過,伺服器通過sessionid來讀取session的資料,但是一般瀏覽器傳送的sessionid在瀏覽器關閉後就沒有了,那麼我們只需要人為的設定sessionid並且儲存下來,不就可以……

如果你擁有伺服器的操作許可權,那麼設定這個非常非常的簡單,只是需要進行如下的步驟:

1、把「session.use_cookies」設定為1,開啟cookie儲存sessionid,不過預設就是1,一般不用修改;

2、把「session.cookie_lifetime」改為正無窮(當然沒有正無窮的引數,不過999999999和正無窮也沒有什麼區別);

3、把「session.gc_maxlifetime」設定為和「session.cookie_lifetime」一樣的時間;

session_start();

session_register('count');

$count++;

echo $count;

然後儲存為「session_check.php」,用瀏覽器開啟「session_check.php」,看看顯示的是不是「1」,再關閉瀏覽器,然後再開啟瀏覽器訪問「session_check.php」,如果顯示「2」,那麼恭喜了,你已經成功;如果失敗的話,請檢查你前面的設定。

但是如果你沒有伺服器的操作許可權,那就比較麻煩了,你需要通過php程式改寫sessionid來實現永久的session資料儲存。查查php.net的函式手冊,可以見到有「session_id」這個函式:如果沒有設定引數,那麼將返回當前的sessionid,如果設定了引數,就會將當前的sessionid設定為給出的值……

只要利用永久性的cookie加上「session_id」函式,就可以實現永久session資料儲存了!

但是為了方便,我們需要知道伺服器設定的「session.name」,但是一般使用者都沒有許可權檢視伺服器的php.ini設定,不過php提供了乙個非常好的函式「phpinfo」,利用這個可以檢視幾乎所有的php資訊!

使用無限生命期Session的方法

session儲存在伺服器端,根據客戶端提供的sessionid來得到這個使用者的檔案,然後讀取檔案,取得變數的值,sessionid可以使用客戶端的cookie或者http1.1協議的query string 就是訪問的url的 後面的部分 來傳送給伺服器,然後伺服器讀取session的目錄 使用...

Session的生命週期

以前在學習的時候沒怎麼注意,今天又回過頭來仔細研究研究了一下session的生命週期。session儲存在伺服器端,一般為了防止在伺服器的記憶體中 為了高速訪問 sessinon在使用者訪問第一次訪問伺服器時建立,需要注意只有訪問jsp servlet等程式時才會建立session,只訪問html ...

Session的生命週期

以前在學習的時候沒怎麼注意,今天又回過頭來仔細研究研究了一下session的生命週期。session儲存在伺服器端,一般為了防止在伺服器的記憶體中 為了高速訪問 sessinon在使用者訪問第一次訪問伺服器時建立,需要注意只有訪問jsp servlet等程式時才會建立session,只訪問html ...