http 401 未授權錯誤表明服務器無法接受未經驗證的請求。為了解決此問題,可以遵循以下步驟:啟用 http 基本身份驗證以提示用戶輸入憑據。驗證提供的憑據,僅允許授權用戶訪問。
揭秘 HTTP 401 未授權:PHP 開發中的訪問限制問題
HTTP 401 未授權錯誤代碼表示服務器在未經過驗證的情況下拒絕請求。這意味著服務器需要有效的憑據才能訪問受保護的資源。在 PHP 中,可以通過使用 HTTP_UNAUTHORIZED 常量輕松生成此錯誤代碼:
header('HTTP/1.1 401 Unauthorized');
登錄后復制
為了防止未經授權的訪問,可以在 PHP 應用中實現以下步驟:
1. 啟用 HTTP Basic 身份驗證
// 在 PHP 腳本的頂部添加以下行: header('WWW-Authenticate: Basic realm="Restricted Area"');
登錄后復制
這將提示用戶通過彈出的對話框輸入用戶名和密碼。
2. 驗證憑據
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { // 從服務器變量中獲取提供的憑據 $username = $_SERVER['PHP_AUTH_USER']; $password = $_SERVER['PHP_AUTH_PW']; // 檢查憑據的有效性,例如: if ($username === 'admin' && $password === 'password') { // 授權已驗證的用戶 } else { // 拒絕訪問 header('HTTP/1.1 401 Unauthorized'); } } else { // 拒絕訪問,因為未提供憑據 header('HTTP/1.1 401 Unauthorized'); }
登錄后復制
實戰案例
以下是一個簡單的 PHP 腳本,展示了如何保護頁面并僅允許授權用戶訪問:
<?php // 啟用 HTTP 基本身份驗證 header('WWW-Authenticate: Basic realm="Protected Area"'); // 驗證憑據 if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { $username = $_SERVER['PHP_AUTH_USER']; $password = $_SERVER['PHP_AUTH_PW']; // 檢查憑據的有效性(例如,從數據庫中檢索) if ($username === 'john' && $password === 'example') { // 授權用戶,顯示受保護的內容 echo '<h1>歡迎,' . $username . '!</h1>'; } else { // 憑據無效,拒絕訪問 header('HTTP/1.1 401 Unauthorized'); } } else { // 未提供憑據,拒絕訪問 header('HTTP/1.1 401 Unauthorized'); } ?>
登錄后復制
通過遵循這些步驟,你可以輕松地在 PHP 應用中實現訪問限制,確保只有授權用戶才能訪問敏感數據或資源。