[英]password protected directory in php
我正在創建一個Web目錄,並且已經創建了一個系統,以便管理員可以向站點添加內容,問題是內容是靜態的並且正在添加到目錄中,因為我們希望將其顯示為mysite.com/test/content/ab.html
所以我如何使用php允許通過php訪問該URL,而用戶詳細信息在mysql數據庫中。 我的意思是,如果用戶登錄並具有權限,那么他可以看到mysite.com/test/content/ab.html
或content
任何文件,但是如果他/她注銷了,則應該重定向。
編輯:我已經解決了使用htaccess的一半問題,現在它檢查用戶是否已登錄,但是如果用戶已登錄,如何重定向? 這是我使用的htaccess
# For security reasons, Option followsymlinks cannot be overridden.
#Options +FollowSymLinks +ExecCGI
Options +SymLinksIfOwnerMatch +ExecCGI
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.php)$
RewriteRule (.*) /index.php [QSA]
</IfModule>
如果不知道您如何登錄,很難提供幫助(您必須這樣做,至少必須知道他們已登錄以及他們是哪個用戶),我將假設一個基本的登錄系統。
我的操作方式是基本的login.php頁面,如果登錄成功,則設置一些基本會話(無密碼,用戶名或敏感信息)並設置其用戶級別(以便您可以管理他們可以訪問的內容)
例如,如果登錄=成功:
$_SESSION['loggedin']['userlevel'] = $FromDatabase['userlevel'];
然后在每個頁面(header.php或config.php)中包含的包含文件中(我的config.php在任何標題/瀏覽器發送之前)
if (!isset($_SESSION))
{
session_start();
}
$strUserLevel = false;
if (isset($_SESSION['loggedin']['userlevel']))
{
$strUserLevel = $_SESSION['loggedin']['userlevel'];
}
然后,我可以在整個站點中使用它來控制他們的訪問權限:
if($strUserLevel == false)
{
header("location: login.php");
die();
}
//or wherever you want to redirect them
//or just say you need to be logged in to view this, link to login page (etc)
if ($strUserlevel < 3) // or whatever level they need for this page
{
echo "You cannot edit this page";
exit();
}
else
{
//a form or whatever
}
以上僅是基本示例。 我的代碼稍微復雜一點,因為我總是在include中使用config.php並設置全局變量以在該站點上使用站點,並具有基本的登錄檢查功能(檢查其當前IP是否與我在登錄時檢查的IP匹配並存儲在數據庫中和其他東西等)。
權限控制的另一種方法是使用mysql表。 因此,如果您具有TABLE表tblEditPageAB,則該表中一行名稱中的任何人都可以編輯該頁面。 盡管這更多地用於管理員控制,即您擁有tblAdministrateOtherUsers-再次在該表中一行具有其名稱/詳細信息的任何人都可以管理其他用戶(或其他任何人)
要檢查這一點,您只需查詢即可,如果沒有結果,則無法查詢。
同樣,最好的方法取決於您的站點,方案,必須編輯多少頁面,是否是即時創建的等等。有各種各樣的方法,但是希望我能給您一些思想,並幫助了:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.