第一個檔案:a.php <html><body> <a href='b.php'>記錄session值: 連到b.php</a><br> <a href='c.php'>顯示session值: 連到c.php</a><br> <a href='d.php'>清除session值: 連到d.php</a><br> </body></html> |
第二個檔案:b.php <?php $UserAcc = "Dana"; $UserName = "牛牛"; $UserPass = "1234"; session_register("UserAcc"); session_register("UserName"); session_register("UserPass"); ?> 設定完成 |
第三個檔案:c.php <?php session_start(); echo "你的帳號是:".$UserAcc."<br>"; echo "你的名字是:".$UserName."<br>"; echo "你的密碼是:".$HTTP_SESSION_VARS["UserPass"]."<br>"; if (session_is_registered("UserPass")) echo "密碼雜湊是:".md5($UserPass); ?> |
第四個檔案:d.php <?php session_start(); session_destroy(); ?> 清除完成 |
先執行a.php(結果如下),再點擊畫面上的各個連結(b.php或c.php或d.php),看看會有什麼結果? 記錄session值: 連到b.php 顯示session值: 連到c.php 清除session值: 連到d.php |
函式:
- session_start()
所有使用任何session函式前,必先執行這個函式
- session_register("變數名稱")
註冊一個session
- session_is_registered("變數名稱")
是否已註冊這個session
- session_destroy()
清除所有的session |
說明:
- 設定session()前,不可以輸出任何空白、字串、數字、HTML語法等,否則會造成程式錯誤,而且無法設定Cookie!
- Session變數的規則與一般變數相同,錢字號($)開頭,字首為字母,可以數字、字母或底線(_)
- $HTTP_SESSION_VARS["變數名稱"] 效果與 $變數名稱 一樣,不過很顯然這樣比較明確,可讀性比較高。
有時可能因為PHP版本不同,而必須使用這樣的方式。
- 配合HTML的FORM,讓使用者從網頁可輸入帳號及密碼,再用session_register()記錄起來,之後使用者在瀏覽其他網頁時,就可以不用再輸入帳號及密碼了。
|
除錯:
- Warning: Cannot send session cache limiter - headers already sent (output started at b.php:2) in b.php on line 7
在b.php檔案裡,在第七行設定的Session之前,已經在第二行輸出了其他字元! 請檢查b.php檔,絕不可在session_start()之前輸出任何空白、字串、數字,或是有HTML語法等。
- Warning: Trying to destroy uninitialized session in d.php on line 3
在d.php檔案裡,在第三行設定的Session函式之前,未使用session_start()函式。 請檢查d.php檔,在各種session函式(例如:session_destroy, session_is_registered)之前,應先使用session_start()函式。 |