阻止直接访问php文件jquery load()

阻止直接访问php文件jquery load(),php,jquery,Php,Jquery,我试图保护我的PHP文件不被直接访问,但我的问题是我没有将它们包括在我的索引中。我使用jquery load或iframe,因此include文件夹中的php文件基本上没有index.php的访问权限或代码。所以我试着用define CONST,但当然没用。。。所以基本上我有URL site.com/file,我将其加载到我的索引中,jquery加载作为一个弹出窗口,但我不希望\n有人试图直接从浏览器访问它来访问。。。知道我应该如何保护它们吗?试试这个,第一个块限制对ajax请求的访问,第二个块

我试图保护我的PHP文件不被直接访问,但我的问题是我没有将它们包括在我的索引中。我使用jquery load或iframe,因此include文件夹中的php文件基本上没有index.php的访问权限或代码。所以我试着用define CONST,但当然没用。。。所以基本上我有URL site.com/file,我将其加载到我的索引中,jquery加载作为一个弹出窗口,但我不希望\n有人试图直接从浏览器访问它来访问。。。知道我应该如何保护它们吗?

试试这个,第一个块限制对ajax请求的访问,第二个块检查引用的url是mywebsite

if(!isset($_SERVER['HTTP_X_REQUESTED_WITH'])){  
    echo "<span class='error_msgh'>Error 1. Process Aborted.</span>";
    die();
}elseif(!preg_match('/(www.mywebsite.com)/', $_SERVER['HTTP_REFERER'])){
    echo "<span class='error_msgh'>Error 2. Process Aborted.</span>";
    die(); 
}

Mike的答案适用于普通用户,但如果您需要确保用户首先加载索引页,您可以执行以下操作:

当用户加载index.php时生成令牌 向会话数据添加令牌 将令牌作为查询参数添加到jquery加载中,例如site.com/file?token=xxxx 在文件加载时,将作为参数传递的令牌与存储在会话中的令牌进行比较,然后清除会话,这样它就不能重用令牌 这样,用户需要在加载文件之前加载index.php


它不会阻止高级用户在拥有令牌后直接访问文件页面。

请注意,用户可以伪造这些标题并仍然查看页面。但是会阻止普通用户这样做。