簡體   English   中英

PHP中受密碼保護的目錄

[英]password protected directory in php

我正在創建一個Web目錄,並且已經創建了一個系統,以便管理員可以向站點添加內容,問題是內容是靜態的並且正在添加到目錄中,因為我們希望將其顯示為mysite.com/test/content/ab.html所以我如何使用php允許通過php訪問該URL,而用戶詳細信息在mysql數據庫中。 我的意思是,如果用戶登錄並具有權限,那么他可以看到mysite.com/test/content/ab.htmlcontent任何文件,但是如果他/她注銷了,則應該重定向。

編輯:我已經解決了使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM