PHP 內使用 HTTP 認證

文章位置: 主頁 > 文章資料庫 > PHP 教學 > PHP 內使用 HTTP 認證
瀏覽次數: 23325
更新時間: 2005/05/06 11:25

文章簡介

如果網站內有些網頁只希望提供給管理員,那麼便需設置一個密碼認證功能。在 PHP 中製作密碼認證的方法有好幾種,以下介紹較為簡單的 HTTP authentication。

需要 PHP 在 Apache module 下執行才有這功能,而在 IIS 及 PHP 使用 CGI Mode 安裝則沒有這個功能。


HTTP authentication

PHP 內實現 HTTP authentication 的原理是使用 header() 傳送一個 "Authentication Required" 的訊息到訪問者的 browser,然後便會彈出一個 pop up windows 要求使用者輸入使用者名稱及密碼。
當使用者輸入登入資料後,所輸入的使用者名稱及密碼會儲存到 $_SERVER['PHP_AUTH_USER'] 及 $_SERVER['PHP_AUTH_PW'] 兩個變數內。


程式碼範例

以下的程式碼會簡單實現密認證功能,只需將這段程式碼放到需保護的程式開端即可:

01 <?php
02
if($_SERVER['PHP_AUTH_USER'] != "administrator" || $_SERVER['PHP_AUTH_PW'] != "123456"){
03     
Header("WWW-Authenticate: Basic realm=\"My Protection\"");
04     
Header("HTTP/1.0 401 Unauthorized");
05     echo 
"請輸入使用者密碼";
06     exit();
07 }
08
?>


以上例子設定成使用者名稱為 "administrator",而密碼為 "123456"。


注意事項:這種認證方法對加了這段程式碼的檔案生效,並不會對整個目錄起作用。如需對目錄下所有檔案作保護,可使用 .htaccess 這類方法。


====================================================
歡迎轉載,但轉載時請保留此宣告,不得作為商業用途
作者: Sam Tang <admin{at}phpini{dot}com>
來源網站: http://www.phpdc.com/


用戶評論 按這裡發表新評論 
Pachelbel mailto dat me at msa dat hinet dat net
25 November 2005 21:16
請問一下
如果要登出的話
如何清除這兩個變數
 
 
 發表評論
姓名:
Email:
內容: