Untitled Document
課程109:加入網頁存取控制
摘要:
在這個課程中,我們使用 header的 WWW-Authenticate 驗證方式,取得使用者名稱與密碼。透過檢查使用者的$PHP_AUTH_USER,$PHP_AUTH_PW全域變數,我們可以知道使用者是否輸入正確的使用者名稱與密碼,再決定是否授權存取頁面。等我們學會了這個技巧之後,再把這個驗證的技巧,整合在之前的資料庫網頁。

驗證功能

說明:

使用 header 函式傳遞 WWW-Authenticate給瀏覽器時,瀏覽器會顯示一個要求輸入使用者名稱與密碼的對話方塊。當使用者輸入資料時,PHP 就會將使用者所輸入的使用者名稱,放到$PHP_AUTH_USER這個全域變數中,把密碼放到$PHP_AUTH_PW這個全域變數中。之後需要存取控制的網頁,只要檢查,這兩個全域變數,便可以得知,使用者是否輸入正確的使用者名稱與密碼。

程式碼
執行程式

將驗證功能整合到留言版的網頁

說明:

留言版需要整合驗證功能的頁面如下:

  1. 留言版更新
  2. 留言版刪除
  3. 留言版列表

一、準備工作

說明:

將之前108課程所做好的PHP程式,放在另一個新的目錄 guestbook109 之下。然後,撰寫一個 authenticate.php 負責提示及驗證使用者的名稱,其他的程式則以 include()函式,將這個檔案含括在程式中即可。


複製檔案:
  1. 使用putty連線到伺服主機。
  2. 輸入以下的命令,進入 public_html 目錄:
    cd public_html
  3. 輸入以下的命令,產生新的目錄 guestbook109,並將 guestbook 中所有檔案,複製到guestbook109:
    cp -r guestbook guestbook109
撰寫 authenticate.php

將下面的PHP程式碼存成 authenticate.php:

<?php 
if ($PHP_AUTH_USER!="admin" || $PHP_AUTH_PW!="password") {

header( 'WWW-Authenticate: Basic realm="留言版系統管理"' );
echo '存取遭拒.';
exit;
}
?>

二、修改更新留言

說明:

在這裡我們只要使用 include()函式,將 authenticate.php 含括在程式中即可。

 

程式碼
執行程式
 
三、修改刪除留言

說明:

在這裡我們只要使用 include()函式,將 authenticate.php 含括在程式中即可。


程式碼
執行程式
 
四、修改留言列表

說明:

留言列表的要求,不同於更新與刪除留言。一般使用者可以直接存取這個網頁,但是,網頁中的更新與刪除的文字連結,必須在輸入正確使用者名稱和密碼才可以顯示。我們可以使用檢查$PHP_AUTH_USER,以及$PHP_AUTH_PW全域變數的方式,來判斷是否要顯示更新與刪除的連結。


程式碼
執行程式
 
五、加入登入的網頁

說明:

之前的留言列表更改之後,輸入正確使用者名稱及密碼後,可以看到更新與刪除的連結,沒輸入時,則隱藏更新與刪除的連結。

但是,反而造成了另一個問題。就是沒有登入的入口點。所以我們要另作一個 PHP 程式(login.php),作為我們登入的入口。


程式碼
執行程式