2011-10-22 66 views
2

我需要建立一個非常簡單的單用戶身份驗證系統。這是一個管理員後端,我只需要一個用戶帳戶就可以訪問它。我寧願不必創建一個「用戶」數據庫。由於只有一個用戶,它甚至可能只是一個密碼 (不需要用戶名)。一個JavaScript警報窗口將是一個很好的地方輸入這個信息。單用戶身份驗證與PHP

我以前在供應商的「審查」服務器上見過它......如何最好地實現這一點?

謝謝!

+3

最簡單的是'.htpasswd'設置。 http://httpd.apache.org/docs/2.2/howto/auth.html – mario

回答

6

對於每個需要驗證的頁面,您可以使用會話來查看用戶是否已通過身份驗證,如果沒有,則將其重定向至身份驗證頁面。

例如,如果你有一個需要身份驗證的頁面admin.php的,你可以首先:

<?php 

session_start(); 

if (empty($_SESSION['authenticated'])) { 
    header('Location: authenticate.php'); 
    exit; 
} 

/* rest of the script ... */ 

然後,authenticate.php可以是一個簡單的腳本,要求輸入密碼。如果密碼正確(if ($_POST['password'] == "secret")),它只需設置$_SESSION['authenticated'] = true

3

我一直在使用這種技術的一些管理的效果影響不大:

  • 不要創建任何用戶帳戶,而不是在系統中的管理任務創建具有權限的,你需要一個數據庫用戶
  • 登錄數據庫用戶和數據庫密碼,並將這些數據存儲在會話變量中
  • 每次需要訪問數據庫時都使用這些變量。如果用戶沒有使用適當的憑據登錄將無法執行任何操作。
+1

我其實很喜歡使用真正的數據庫用戶進行用戶認證。是的,性能會受到影響,但是您從數據庫端訪問控制(包括對用戶名進行視圖過濾)中獲益頗多。當然,這不是一個神奇的子彈,但對安全性比原始性能更值得關注的應用程序可能會有用。 –

+0

如果OP是數據庫管理員,這不是唯一可行嗎?在他/她從託管服務提供商租用網絡空間的情況下,情況可能並非如此。 – toon81

+0

如果您向任何真實用戶提供數據庫用戶,則回覆爲是。但是如果你只有一個用戶(管理員),你至少必須擁有一個數據庫用戶,你可以用它來實現這個機制。 – Ivan

3

最簡單的方法是不創造任何用戶表或憑證或會話或任何東西,只是密碼保護目錄管理馬里奧使用htpasswd的

您可以使用此tutorial更好地理解和容易的建議設置