我的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 之外没有其他文件夹。
答案 0 :(得分:4)
我会尝试的第一件事:
将包含的文件移出文档根目录
将包含的文件移到另一个文件夹中,并使用.htaccess
保护它。或者,将您的包含文件重命名为.inc
并以此为基础创建规则。
确保包含的文件不输出任何内容;这不是很安全,但如果你的文件只包含函数,类定义等而不产生任何输出,它只会显示一个空页。
通过使用常量可以实现对此的hackish方法:
的index.php
<?php
define('MY_CONSTANT', '123');
include('helper.php');
helper.php
<?php
if (!defined('MY_CONSTANT')) { exit; }
// we were called from another file
// proceed
修改强>
上面的数字2方法可以通过以下方式完成:
在public_html
下创建一个文件夹,例如includes/
将所有应包含的文件移至此文件夹
在里面添加以下.htaccess
:
<FilesMatch "\.php$">
Order allow, deny
Deny from all
</FilesMatch>
答案 1 :(得分: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>