【问题标题】:Secure a php page from accessing it [duplicate]保护 php 页面不被访问 [重复]
【发布时间】:2016-09-05 12:02:34
【问题描述】:

我有一个 index.php 页面,我正在使用

<?php include("default.php"); ?>

从 default.php 获取内容。现在我希望如果有人直接打开 default.php 它变得无法访问或将其重定向回 index.php 页面。我该怎么做 ?

【问题讨论】:

  • 你可以在.htaccess中完成
  • 你有研究过这个吗?
  • wordpress 的做法是使用常量。在您的索引文件中使用define('IN_APP', true),在您的子文件中使用if (!defined('IN_APP')) die();。这样做的烦人事情不仅仅是从公共视图中删除文件,而是您必须在您不想访问的每个文件中执行此操作。

标签: php


【解决方案1】:

如果您不希望用户访问某些内容,请不要将其放入public_html。提示在名称中,它是 public

相反,将此类文件保存在文档根目录之外。例如,您可能有:

- /public_html
|  - index.php
|
- /files
   - default.php

从这里,index.php 可以致电:

include("../files/default.php");

但任何用户都无法直接访问default.php

【讨论】:

    【解决方案2】:

    @NiettheDarkAbsol 的答案是最好的,但有时将文件放在 public_html 目录之外不是一种选择。在这种情况下,您可以在每个文件的顶部添加一个检查,以确保它是由有效文件打开的,而不是直接访问的。为此,我在可以使用define('IN_SITE', true, true); 访问的文件顶部设置一个常量,然后将以下内容添加到所有不允许直接访问的页面:

    if ( ! defined('IN_SITE') )
        die('No direct access allowed!');
    

    【讨论】:

      【解决方案3】:

      在文件中添加上述代码,您将在其他文件中包含哪个文件。 default.php 中的这段代码

      <?php
      if(!defined('MyConst')) {
         die('Direct access not permitted');
      }
      ?>
      

      下面的文件中的代码在上面的文件中包含这个代码在 index.php 文件中

      <?php
      define('MyConst', TRUE);
      ?>
      

      您可以在 .htaccess 的帮助下实现其他方式,将所有文件添加到文件夹名称 include 和 .htaccess 中

      Deny from all
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-12
        • 1970-01-01
        • 1970-01-01
        • 2011-06-25
        • 2015-09-17
        • 2012-11-08
        • 1970-01-01
        • 2017-05-29
        相关资源
        最近更新 更多