2016-03-05 55 views
0

我正在構建一個網站,作爲作者,我希望能夠在線登錄併發布新文章。我希望其他用戶也能登錄,以便他們能對我的帖子發表評論。但是,我不希望在我的網站上擁有「網站管理員」鏈接,我也不想通過網址訪問它,比如說「www.example.com/admin」。我不希望公衆用戶看到鏈接或訪問管理網址。作爲config.php vs用戶表的一部分的CMS管理員

所以我想將管理員ID爲我的用戶表的用戶之一。我將爲該管理員ID設置一個IS_ADMIN列爲TRUE。所有其他用戶將具有FALSE。在這種情況下,每當我以管理員身份登錄時,我的頁面將檢查IS_ADMIN是否爲TRUE,然後只有我擁有該「網站管理員」鏈接。如果其他用戶登錄,他們將不會看到「Site Admin」鏈接,因爲他們的IS_ADMIN爲FALSE。

有一次,我以管理員身份登錄,我還是有www.example.com/admin.php在我的網址。但其他人可能只需鍵入www.example.com/admin.php。

這是做到這一點的安全方式?我真的不能決定如何處理這個問題。請指教。

+0

首先查詢是否與admin id相同,然後打開此頁面否則/ elseif打開此頁面,http:// stackoverflow。com/questions/11668814/if-else-statement-that-redirects-to-another-page –

+0

對不起,但你的答案甚至與我的問題沒有關係。 – iPhoneJavaDev

+0

你是什麼意思:「一旦我以管理員身份登錄,我的網址仍然會有www.example.com/admin.php,但其他人可能只需鍵入www.example.com/admin.php。」 – kojow7

回答

2

我怎麼會做如下:

  1. 添加USER_TYPE列(其中可以包括「管理員」,「編輯」和「標準」類型)或簡單地用一個admin_flag柱與管理員的值爲1,非管理員的值爲0。在$ _SESSION變量(例如$ _SESSION ['auth'] = 1(成功登錄)和$ _SESSION ['admin'] = 1(管理員用戶))中登錄後,存儲任何必需的用戶憑證。這假定您正在使用admin_flag列方法。如果您喜歡該方法,可以將其更改爲user_type和相關值。

  2. 在頂部任何管理頁面(如admin.php)檢查$ _SESSION ['admin']是否不存在或者它是否設置爲1.如果是,將用戶重定向回到主頁面(和/或顯示錯誤消息,告訴他們他們無法訪問此頁面)。你的代碼應該是這個樣子:

    if (empty($_SESSION['admin']) || $_SESSION['admin'] != 1){ 
        header("Location: index.php"); 
        exit(); 
    } 
    

要點:確保有一個標題後退出()語句重定向否則這打開了你的腳本的其餘部分的潛在的安全問題被送到用戶的瀏覽器。

您可以使用$ _SESSION ['auth']變量做類似的操作,以防止未經身份驗證的用戶在您的網站上執行特定操作(或者使其成爲上述if語句的附加要求)。

+1

謝謝kojow7 – iPhoneJavaDev

+0

很高興我能幫到你。 :) – kojow7

1

就隱藏鏈接管理頁面並不安全 - 你是正確的,使用完整路徑的非管理員用戶可以只瀏覽網頁。

您也應該檢查用戶的管理岬,同時渲染admin.php的和重定向,如果他們是不是你。

但是,說實話,有那麼多的開源CMSes那裏有強大的功能和久經考驗的安全,我會傾向於認爲你應該使用其中的一個。

從頭開始滾動安能啓發性,但把它在線直播的要求,讓您的服務器受到影響。

相關問題