2016-02-25 49 views
0

我目前正在開發小型項目的php中的迷你cms。首先,讓我說,我只有關於該語言的基本知識。一個index.php處理所有內容

在嘗試開發該迷你cms的登錄頁面時,我在github上搜索了項目,並遇到名爲「php-login-minimal」的項目。

我已經根據我的項目實施了它,但我有一些麻煩如下;

它使用視圖並通過包含以下命令的.htaccess從外部訪問保護視圖;

# This file prevents that your .php view files are accessed directly from the outside 
<Files ~ "\.(htaccess|php)$"> 
order allow,deny 
deny from all 
</Files> 

並調用該視圖,如果用戶以這種方式登錄;

// ... ask if we are logged in here: 
if ($login->isUserLoggedIn() == true) { 
    // the user is logged in. you can do whatever you want here. 
    // for demonstration purposes, we simply show the "you are logged in" view. 
    include("views/logged_in.php"); 
} else { 
    // the user is not logged in. you can do whatever you want here. 
    // for demonstration purposes, we simply show the "you are not logged in" view. 
    include("views/not_logged_in.php"); 
} 

麻煩從這裏開始。 在我的項目的「logged_in.php」文件中,有導航鏈接將用戶重定向到該視圖以創建,更新頁面或帖子,如下所示;

<li class="active"> 
<a href="<?php echo ADMIN_ROOT; ?>index.php">main panel</a> 
</li> 
<li> 
<a href="<?php echo ADMIN_ROOT; >page/pageManagement.php">pages</a> 
<ul> 
    <li class="green"><a href='<?php echo ADMIN_ROOT; ?>page/createPage.php'>create new page</a> 
    </li> 
</ul> 
</li> 

因此,正如預期的那樣,當我點擊該鏈接時,它會顯示我禁止的消息。我該如何處理這個問題,或者你能帶領我找到更好的解決方案?

謝謝。

+0

你爲什麼要阻止訪問後端PHP文件?我也在一個網頁上,你總是在索引和JavaScript處理的內容,但只要你沒有鏈接任何這些PHP腳本你不應該真的想阻止它們,普通用戶贏得'嘗試訪問它們,任何人都應該處理它給他帶來的任何問題。你應該這樣做,即使它被直接訪問也不會造成任何傷害。 – aron9forever

+0

@ aron9forever事實上,我也想了解它。爲什麼開發者傾向於以這種方式開發項目。他認爲,在現代Web開發中,項目使用一個index.php來處理所有事情。來源:[http://www.dev-metal.com/install-php-login-nets-1-minimal-login-script-ubuntu/#comment-1061061745] – aeKynr

回答

0

更好的解決方案是一個意見了......

但也有有效參數,以防止.php直接訪問代碼:

清潔URL連貫性:

通過防止直接訪問權,保證您的網站網址方案將得到尊重,避免訪問您的網頁的不同方式。

URL長壽:

您的網址不直接連接到你的文件結構,這樣可以保持它,即使您更改網站的結構或編程語言。

安全:

並非所有的你的php文件都一定是要通過URL來加載,其中的一些意圖被包含在其他PHP文件。阻止直接訪問這些頁面的另一種方法是在父文件中聲明全局變量,並在include文件中聲明該變量未定義時停止執行。


使用一個頁面來所有請求路由是另一種常見的做法,有優勢的簡化重寫規則的條件和清潔控制所有的重定向在代碼的一頁。從某種意義上說,這是更復雜的第一步architectural patterns。我看到你的第三部分腳本包含'views/...':可能它指的是MVC模式。

所以,如果你選擇保持原來的URL結構,你必須刪除。htaccess文件,否則你必須重寫你的URL並修改.htaccess文件,將RewriteRule條件添加到你的index.php(或另一個路由器文件名)。