使用PHP進行HTTP認證

2021-05-24 05:23:01 字數 1371 閱讀 9715

我們在登入某些安全性較高的**時,有時候可能會遇到這種情況:直接在網頁上

彈出乙個windows視窗,要求輸入認證的使用者名稱和密碼,只有認證登入成功才能看到內

容,否則的話則連該頁面都無法開啟,這是一種http認證的的方式,它大大加強了系統

的保密性和安全性,那這是如何實現的呢,下面我就簡要向大家介紹一下.

利用php來實現http的強制認證是十分簡單的,只需簡單的幾行**就可以實現,下面

我們來看乙個例子,然後結合這裡例子我向大家詳細介紹一下php實現http認證.

<?php

if(!isset($_server['php_auth_user']))

else

?>1.實現說明

怎麼樣,看到上面的**了吧,就這麼幾行新增到你的程式頁面上就可以實現了.

它是通過利用header()函式向客戶端瀏覽器傳送」authentication required」資訊,強制其彈出乙個使用者名稱/密碼輸入視窗,當使用者輸入使用者名稱和密碼後,包含有url的php指令碼將會加上預定義變數php_auth_user, php_auth_pw和auth_type然後再次呼叫,這三個變數分別表示使用者名稱,密碼和認證型別(從php5.0.1起開始支援」basic」和」digest」兩種認證方式),它們被儲存在$_server(從hp>>4.1.0起有效)或$http_server_vars(從php3起有效)陣列中具體應用時,我們可以把驗證的幾行**寫成函式,只要判斷到使用者變數不存在或驗證不正確就一直執行該函式並彈出視窗,而且還可以設定錯誤登入幾次就不允許該使用者訪問,具體的使用大家使勁的發散思考吧.

2.注意事項:

我們在使用php實現http認證機制時還有幾點問題我們是需要注意的:

1.這段**必須放到程式的開始,且在其開始執行之前不能有任何輸出(若有輸出則

需要使用輸出緩衝函式才行).

2.php的http認證機制僅在php以apache模組方式執行時才有效,這個容易理解,它本身是http強制認證,肯定是不適合於cgi版本,不能在命令列下執行的.

3.header傳送標頭**時請小心.為了對所有的客戶端保證相容性,關鍵字」basic」的第乙個字母必須大寫為」b」,分界字串必須用雙引號引用(不能是單引號);在http/1.0和401之間必須有且僅有乙個空格.

4.在上面列子中,僅輸出了使用者名稱和密碼,而在實際系統中則可按照登入驗證流程進行與資料庫或其他方式進行判斷和驗證.

5.從php4.3.0起,為防止有人通過編寫指令碼來從頁面上獲取密碼,當外部認證對特定頁面有效,並且安全模式被開啟時,php_auth變數將不會被設定.可以用remote_user來辨別外部認證的使用者,用authtype指令來判斷外部認證機制是否有效.

6.要想讓http認證能夠在iis下工作,php配置選項cgi.rfc2616_headers必須設定為0(預設值).

使用PHP模擬HTTP認證

使用php模擬http認證 如果你希望在每個指令碼的基礎上實現口令保護功能,那麼你可以通過結合header 函式和 php auth user php auth pw全域性變數的方法來建立乙個基本認證機制。通常基於伺服器的認證請求 響應過程如下 1.使用者向一台web伺服器請求乙個檔案。如果檔案在乙...

PHP的HTTP認證機制

php的http認證機制因此該功能不適用於 cgi 版本。在 apache 模組的 php 指令碼中,可以用 header 函式來向客戶端瀏覽器傳送authentication required資訊,使其彈出乙個使用者名稱 密碼輸入視窗。當使用者輸入使用者名稱和密碼後,包含有 url 的 php 指...

php使用curl庫進行ssl雙向認證

官方文件 官方舉例 curl setopt ch curlopt verbose 1 curl setopt ch curlopt ssl verifyhost 1 curl setopt ch curlopt ssl verifypeer 1 curl setopt ch curlopt cain...