我正在開發一個使用PHP的門戶網站,並且需要實現一個簡單的PHP身份驗證系統,該系統根據用戶憑據限制訪問某些頁面。通過身份驗證保護網頁
我有一個函數CheckAuth()需要一個參數(整數)。也就是說,我的數據庫有五個授權級別1-5。如果我調用CheckAuth(3),如果用戶的授權等級爲3或以上,則返回true。我的代碼,現在讀:
if(!CheckAuth(3) {
die("Sorry, we were unable to deliver the requested content.");
}
這種解決方案的問題是,它會破壞頁面的佈局,作爲其他元素,如頁面的頁腳將不顯示。
有條件地只顯示頁面的一部分的最佳方式是什麼?
在此先感謝! 達里奧
function CheckAuth() {
require("config.php");
//User ain't been logged in?
if(!isset($_SESSION["login"])) {
return 0;
}
//Alright user is logged in, lets check the level...
//1 = User, 2 = OP (or Admin)
$query = "SELECT * FROM delegations WHERE id=" . $_SESSION["login"];
$results = mysqli_query($con, $query);
while($row = mysqli_fetch_array($results)) {
return $row["Level"];
}
}
這個問題可能會派上用場:http://stackoverflow.com/questions/1181105/how-safe-are-php-session-variables請注意,控制會話變量中的身份驗證可以被操縱 –
如果你正在添加進一步的代碼將不會執行。你可以嘗試echo而不是 – 2013-07-24 17:05:23
嗨達里爾,謝謝,我會看看你的鏈接。這是一個小項目,本質上登錄主要是爲正確的人提供正確的內容,以便不會意外地編輯其他人的內容,但沒有「敏感」或「有價值」的信息,因此不太可能有人會想要違反該網站。基本安全是行動中(即:防止SQL注入等) – MrD