詳解php設定session(到期、失效、有效期間)_php技巧

來源:互聯網
上載者:User

在php中設定session有很多方麵包有給session設定值或直接設定到期、失效和有效期間,下面小編來給大家給各位朋友介紹怎麼使用。

我們先來看看在php.ini中session怎麼設定,開啟 php.ini,尋找Session設定部分中以下一項,代碼如下:

session.save_path = "N;/path" session.save_path = "C:/Temp"  #此處以你自己設定的路徑為準

 這項設定提供給我們可以給session存放目錄進行多級散列,其中“N”表示要設定的目錄級數,後面的“/path”表示session檔案存放的根目錄路徑,比如我們設定為下面的格式,代碼如下:

session.save_path = "2;C:/Temp"

上面的設定表示我們把php的session檔案進行兩級目錄存放,每一級目錄分別是0-9和a-z共36個字母數字為目錄名,這樣存放session的目錄可以達到36*36個,共1332個檔案夾,相信作為單台伺服器來說,這是完全夠用了,如果說您的系統架構設計為多台伺服器共用session資料,可以把目錄級增加到3級或者更多。

Session到期時間設定

繼續PHP中的Session話題,在PHP中主要通過設定session.gc_maxlifetime來設定Session的生存周期,例如如下代碼:

<?php ini_set('session.gc_maxlifetime', 3600); //設定時間 ini_get('session.gc_maxlifetime');//得到ini中設定值 ?> 

下面提供一個別人封裝好的函數,但是我沒有測試過,僅供參考,代碼如下:

<?php function start_session($expire = 0) {  if ($expire == 0) {  $expire = ini_get('session.gc_maxlifetime');  } else {  ini_set('session.gc_maxlifetime', $expire);  }  if (emptyempty($_COOKIE['PHPSESSID'])) {  session_set_cookie_params($expire);  session_start();  } else {  session_start();  setcookie('PHPSESSID', session_id(), time() + $expire);  } } ?> 

使用方法:

加入start_session(600);//600秒以後到期。

session永不到期的方法

開啟php.ini設定檔案,修改三行如下:

1、session.use_cookies

把這個的值設定為1,利用cookie來傳遞sessionid

2、session.cookie_lifetime

這個代表SessionID在用戶端Cookie儲存的時間,預設是0,代表瀏覽器一關閉SessionID就作廢……就是因為這個所以PHP的session不能永久使用! 那麼我們把它設定為一個我們認為很大的數字吧,999999999怎麼樣,可以的!就這樣。

3、session.gc_maxlifetime

這個是Session資料在伺服器端儲存的時間,如果超過這個時間,那麼Session資料就自動刪除!那麼我們也把它設定為99999999。

就這樣一切ok了,當然你不相信的話就測試一下看看——設定一個session值過個10天半個月的回來看看,如果你的電腦沒有斷電或者宕機,你仍然可以看見這個sessionid。

當然也可能你沒有控制伺服器的許可權並不能像我一樣幸運的可以修改php.ini設定,一切依靠我們自己也是有辦法的,當然就必須利用到用戶端儲存cookie了,吧得到的sessionID儲存到用戶端的cookie裡面,設定這個cookie的值,然後把這個值傳遞給session_id()這個函數,具體做法如下:

<?php session_start(); // 啟動Session $_SESSION['count']; // 註冊Session變數Count isset($PHPSESSID)?session_id($PHPSESSID):$PHPSESSID = session_id(); // 如果設定了$PHPSESSID,就將SessionID賦值為$PHPSESSID,否則產生SessionID $_SESSION['count']++; // 變數count加1 setcookie('PHPSESSID', $PHPSESSID, time()+3156000); // 儲存SessionID到Cookie中 echo $count; // 顯示Session變數count的值 ?> 

以上就是php設定session的具體做法,內容涉及session設定值或直接設定到期、失效和有效期間,希望對大家的學習有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.