一个index.php来处理一切

时间:2016-02-25 23:51:31

标签: php .htaccess

我目前正在为小项目开发php中的迷你cms。 首先,我要说的是我对该语言的基本知识。

在尝试为该迷你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>

所以,正如预期的那样,当我点击该链接时,它会显示我禁止的消息。我该如何处理这个问题,还是能引导我找到更好的解决方案?

感谢。

1 个答案:

答案 0 :(得分:0)

更好的解决方案是意见......

但是有一些有效的参数可以阻止直接访问.php代码:

清除网址连贯性:

通过阻止直接访问,您可以保证您的网站网址方案得到尊重,从而避免使用不同的方式访问您的网页。

网址长寿:

您的网址未直接与您的文件结构相关联,因此即使您更改网站结构或编程语言,也可以对其进行维护。

安全

并非所有的php文件都必须通过URL加载,其中一些旨在包含在其他php文件中。防止直接访问这些页面的另一种方法是在父文件中声明一个全局变量,并在 - 包含文件中 - 如果该变量未定义则停止执行。

使用一个页面来路由所有请求是另一种常见做法,它有利于简化RewriteRule条件并在一页代码中清除控制所有重定向。从某种意义上说,这是更复杂architectural patterns的第一步。我看到你的第三部分脚本包括&views; / /。39 ;;可能它指的是MVC模式。

因此,如果您选择维护原始URL结构,则必须删除.htaccess文件,否则您必须重写URL并修改.htaccess文件,将RewriteRule条件重定向到index.php(或其他路由器) filename)。