我有一个PHP脚本,该脚本通过include_once
包含在pageX.php中。我们称它为脚本A.php。
可以通过从浏览器直接导航到该脚本来调用该脚本:www.whatever.com/scripts/A.php。
但是我想要的是脚本A.php仅可通过包含(在pageX.php上)来访问,因为它包含我只希望在pageX.php上显示的信息。
除了使用$_SESSION
之外,还有其他方法吗?
答案 0 :(得分:2)
您可以在index.php
中定义一个常量,如果直接调用包含的脚本,该常量将不存在。在您包含的脚本中,检查是否设置了该常量,如果未设置,则停止执行。
您的原始脚本(index.php
):
define('PROPERLY_STARTED', true);
include_once 'a.php';
您的a.php
:
if (!defined('PROPERLY_STARTED')) return;
由于某些原因我的评论被删除:在此情况下,由于您需要将该代码添加到每个文件中,因此容易出错。解决此问题的既定方法是仅在您的Web根目录中公开index.php
,并在您的Web根目录之外的目录中保留应无法访问的文件,以使它们甚至无法通过HTTP访问(请参见例如问题被接受的答案标记为重复)
答案 1 :(得分:1)
请不要让A.php
输出任何内容并使用
基于功能/方法的方法
如果只定义了函数,则PHP脚本不会执行任何操作。
仅限制对pageX.php
的访问(通过chmod / htaccess)