php / jquery - 仅在外部加载时显示页面内容

时间:2018-05-08 23:02:23

标签: php jquery ajax

我有一个索引页面,我使用jquery' .load()函数在div内加载外部页面内容。

我的问题'如果用户访问文件本身,他也会看到页面内容,但我不想这样。我只希望在整个.load()函数中将页面加载到索引页面中时加载页面。

我该怎么做才能应用这条规则?

2 个答案:

答案 0 :(得分:0)

第一个建议是通过将其作为index.php的一部分包含在PHP中来加载它。

第二种方法是使用$_SESSION。从index.php设置会话密钥,然后在您正在加载的文件中检查它:

的index.php



<?php

session_start();

$_SESSION['activatedFromIndexPage'] = true;

?>
<div id='foo'>Your HTML here</div>

<script>
  $(document).ready(function() {
    $('#foo').load('bar.php');
  });
</script>
&#13;
&#13;
&#13;

bar.php

<?php
session_start();

if(!array_key_exists('activatedFromIndexPage',$_SESSION)) {
  // if the key is not set, you didn't get here by way of index.php
  die;
}
?>
<div>your output goes here...</div>

答案 1 :(得分:0)

由于.load()方法使用的是ajax,因此您应该可以使用$_SERVER['HTTP_X_REQUESTED_WITH']。我可能会创建一个可重用的函数来检查。

<强> /functions/isAjaxRequest.php

function isAjaxRequest($type = 'HTTP_X_REQUESTED_WITH')
{
    return (!empty($_SERVER[$type]) && strtolower($_SERVER[$type]) == 'xmlhttprequest');
}

<强> /ajax_load_page.php

<?php
# Add the function
require_once(__DIR__.'/functions/isAjaxRequest.php');
# Stop if not ajax
$isAjax = isAjaxRequest();
if(!$isAjax)
    die('Invalid Request.');
?>
<p>This is a valid request!</p>

虽然标题可以被客户伪造,但普通用户不会试图绕过它。