2016-02-25 88 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(或另一个路由器文件名)。