記錄帳號及密碼:使用 Session

第一個檔案:a.php
<?php
  session_start();
  session_register("UserName");
  $UserName = "牛牛";
?>
<a href='b.php'>連到b.php</a>
第二個檔案:b.php
<?php
  session_start();
  
  if (session_is_registered("UserName")) {
    echo "UserName 已註冊了,值為:".$UserName."<br>";
  } else {
    echo "UserName 還沒有被註冊<br>";
  }
  
  session_unregister("UserName");
  if (session_is_registered("UserName")) {
    echo "UserName 已註冊了,值為:".$UserName."<br>";
  } else {
    echo "UserName 還沒有被註冊<br>";
  }
  session_destroy();
?>
先執行a.php,再執行b.php
結果:
UserName 已註冊了,值為:牛牛
UserName 還沒有被註冊
函式:
session_start() 開始使用Session
session_register("變數名稱") 註冊一個Session
session_is_registered("變數名稱") 判斷這個Session是否被設定
session_unregister("變數名稱") 取消已註冊的Session
session_destroy() 終止使用Session,並清除所有的Session值
說明:
  1. 在使用session相關函式前,不可以輸出任何空白、字串、數字、HTML語法等,否則會造成程式錯誤,而且無法設定Session!
  2. 設定Session後,在另一個網頁使用前,必須先加上session_start(),才能取出設定的session值。
  3. Session變數的規則與一般變數相同,錢字號($)開頭,字首為字母,可以數字、字母或底線(_)。
  4. 配合HTML的FORM,讓使用者從網頁可輸入帳號及密碼,再用session_register()記錄起來,之後使用者在瀏覽其他網頁時,就可以不用再輸入帳號及密碼了。
  5. 使用session_destroy()可以清除全部session內容。
除錯:
  1. Warning: Cannot send session cache limiter - headers already sent (output started at a.php:2) in a.php on line 3
    在a.php檔案裡,在第三行的使用session之前,已經輸出了其他字元!
    請檢查a.php檔,絕不可在session_register()之前輸出任何空白、字串、數字,或是有HTML語法等。
  2. Warning: Trying to destroy uninitialized session in a.php on line 3
    在a.php檔案裡,無法執行第三行的session_destroy()。
    請檢查a.php檔,在session_destroy()之前是否已做session_start()。

作者:Dana, cowwu@ms15.hinet.net, 2002/06/05
本文章公開於個人網站 http://www.dana.idv.tw
Home Copyright © Shu-Chen Wu