『壹』 php HTTP 認證實例詳解
HP來實現HTTP的強制認證是十分簡單的,只需簡單的幾行代碼就可以實現,下面我們來看一個例子,然後結合這里例子我向大家詳細介紹一下PHP實現HTTP認證。
<?php
if(!isset($_SERVER['PHP_AUTH_USER']))
{
header('WWW-Authenticate:
Basic
realm="系統名稱"');
header('HTTP/1.0
401
Unauthorized');
echo
'未通過HTTP認證.';
exit;
}
else
{
echo
'認證通過.';
echo
'用戶名:
'.$_SERVER['PHP_AUTH_USER']."\n";
echo
'密碼:
'.$_SERVER['PHP_AUTH_PW']."\n";
}
?>
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.注意事項:
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網路驗證系統開源
用途是給易語言和按鍵精靈所寫的游戲腳本的進行注冊碼遠程授權
dll動態鏈接庫
基於ThinkPHP3.2的非前後端分離Web
服務端(php)介紹:
客戶端(dll)介紹:
https://github.com/HJaycee/Signxx