7

我的 php 网站有多个 php 文件,其中一些用于用户界面,其中一些是帮助文件(这些文件通过数据库通信并相互返回结果)。现在我需要该用户不能从他们的直接 url 执行帮助文件。

e.g. mydomain.com/login.php   ---------- (Interface file, must be accessible to user)
     mydomain.com/login_handle.php   ----(Healper file, must not be accessible to user)

所以我需要的是用户可以执行和浏览mydomain.com/login.php但不能执行mydomain.com/login_handle.php,而login.php和handle_login.php保持通信并且可以互相访问。谢谢,

编辑:抱歉,我使用的是共享主机,除了 public_html 之外没有其他文件夹

4

2 回答 2

7

我会尝试的第一件事:

  1. 将包含的文件移到文档根目录之外

  2. 将包含的文件移动到另一个文件夹中并使用.htaccess. 或者,重命名您的包含文件以结束.inc并基于此创建规则。

  3. 确保包含的文件不输出任何内容;这不是很安全,但如果你的文件只包含函数、类定义等而不产生任何输出,它只会显示一个空页面。

可以通过使用常量来完成这种骇人听闻的方法:

索引.php

<?php

define('MY_CONSTANT', '123');

include('helper.php');

助手.php

<?php

if (!defined('MY_CONSTANT')) { exit; }

// we were called from another file
// proceed

编辑

上面的第 2 种方法可以通过以下方式完成:

  1. 在下面创建一个文件夹public_html,例如includes/

  2. 将所有应该包含的文件移动到此文件夹中

  3. 在里面添加以下.htaccess内容:

    <FilesMatch "\.php$">
    Order allow, deny
    Deny from all
    </FilesMatch>
    
于 2012-10-23T01:42:12.247 回答
1

尝试使用 .htaccess。

而不是 127.0.0.1 这个 ip,你需要输入你的服务器 ip 地址。

<Files login_handle.php>
    Order Allow,Deny
    Deny from all
    Allow from 127.0.0.1
</Files>
于 2012-10-23T00:08:26.207 回答