阻止直接访问文件,但允许通过jquerys加载功能进行访问

GRO*_*ER. 6 javascript php .htaccess jquery

我正在使用jQuery通过它的.load()功能向用户显示某个页面.我这样做是为了允许用户自定义网站,使他们能够满足他们的需求.

此刻,我正在尝试feed.php在容器内显示文件main.php;

我遇到了一个问题,我想阻止直接访问该文件(即:直接进入它的路径(./feed.php )),但仍然允许它通过该.load()函数提供服务.

如果我使用这个.htaccess deny from all方法,我会在页面的特定部分得到403.我找不到任何其他解决方案的问题; 不允许我达到我想要的目标.

这是我目前的(简化) scripthtml:

<script type="text/javascript">
    $("#dock-left-container").load("feed.php"); // load feed.php into the dock-left-container div
</script>

<div class="dock-leftside" id="dock-left-container"></div> // dock-left-container div
Run Code Online (Sandbox Code Playgroud)

如果有人可以通过.htaccess,php或甚至完全不同的方式来建议解决方案,我将非常感激!

提前致谢.

Rah*_*tel 2

请按照以下步骤来实现:

  1. .loadjquery的函数中贴出安全代码。
  2. 在 Feed.php 页面中放置一个 PHP 条件,如果security_code发现发布的参数并与security_code传入的参数匹配.load,则仅允许访问该页面,否则进行限制。

请按照以下对现有代码的更改来实现它。

JS

<?php 
    $_SESSION['security_code'] = randomCode();
?>
<script type="text/javascript">
    $("#dock-left-container").load("feed.php", {
       security_code: '<?= $_SESSION['security_code']; ?>'
   }); // load feed.php into the dock-left-container div
</script>
Run Code Online (Sandbox Code Playgroud)

PHP

将 php 条件放在 feed.php 的顶部

if(isset($_POST['security_code']) && $_POST['security_code'] == $_SESSION['security_code']){
    //Feed.php page's all the stuff will go here
}else{
    echo "No direct access of this page will be allowed.";
}
Run Code Online (Sandbox Code Playgroud)