回 HTML跨平台行動網頁設計班 課程時間表

PHP:Cookie、Session

Session

Session是瀏覽器與伺服器連線期間所保持的連線狀態,其有效期間為進入有開啟Session的網站開始,一直到瀏覽器關閉才結束,Session有效期間內在該網站內切換網頁,Session內存放的的資料都可以在各網頁間共享,且因Session資料是存放在伺服器端,因此其安全性較高。且只要瀏覽器沒有關閉,即使離開該網站,再次回到網站時,會發現原來在該網站內的一些狀態仍然有效(例如登入狀態)。

啟動Session功能

在PHP中要使用Session必須先啟動,且每個網頁都必須在使用前啟動,而不是啟動一次就整個網站有效,啟動方式為呼叫session_start()函式;啟動的時間點也必須在使用echoprint之前之前就要啟動了,所以通常會放在網頁的第一行。

範例:

<?php
    session_start();
?>
<!DOCTYPE html>
<html>
    <head>
    
    ...以下省略...

儲存Session資料

啟動Session後,可以透過內建變數$_SESSION來存放資料,其使用方式和一般陣列變數相同。

範例:

<?php
    $_SESSION['account'] = 'Aaron';        // 將字串Aaron放入Session中,其存取的索引名稱為account
    $_SESSION['password'] = '12345678';    // 將字串12345678放入Session中,其存取的索引名稱為password
?>
Session在伺服器的存放路徑,設定在php.ini內,必須確定該路徑存在,否則Session會無法運作。
session.save_path = "C:\Windows\Temp"

取得Session資料

要取得Session內資料和一般的陣列變數一樣。

範例:

<?php
    echo '帳號:'.$_SESSION['account'];    // 將Session內的account資料顯示到網頁上
    echo '密碼:'.$_SESSION['password'];   // 將Session內的password資料顯示到網頁上
?>

刪除Session

Session內資料在使用者關閉瀏覽器後會自動失效,但也可以在瀏覽器為關閉前透過程式來讓其失效(例如:使用者登出後,會讓存放在Session內的登入資料失效),其方式有兩種。

使用unset()函式

<?php
    unset($_SESSION['account']);    // 讓Session內的account資料失效
    unset($_SESSION['password']);   // 讓Session內的password資料失效
?>

使用session_unset()讓全部Session資料失效

<?php
    session_unset();
?>

Session有效時間

Session即使在瀏覽器尚未關閉的情況下,如果有一段時間沒有對該網站進行任何動作,仍然會失效,其有效期限的設定在php.ini內

session.gc_maxlifetime = 1440

預設自動失效時間為1440秒,也就是24分鐘,所以如果24分鐘內沒有對該網站執行任何操作,Session救護自動失效,可以根據網站需求來調整該時間。

session.gc_maxlifetime也可以透過程式碼來動態修改:
ini_set("session.gc_maxlifetime", "300");

作業