Javascript .load没有看到PHP的变量

时间:2014-09-08 09:09:45

标签: javascript php jquery

我使用以下脚本在页面上加载内容而不刷新它。我以这种方式加载的页面不应作为独立页面访问。

 <script>
    $(".toLoad").click( function(event)
    {
        event.preventDefault();
        $("#page-wrapper").load($(this).attr("href"));
    });
</script>

我在index.php中有这个

define('SECURE', true);

,这在其他文件中

!defined('SECURE') and exit("Not allowed");

这个系统适用于PHP的include或require函数,但它阻止我使用给定的javascript从index.php加载页面。什么是变通方法或我如何限制直接访问,但允许它通过我的主页上的JavaScript?

谢谢!

3 个答案:

答案 0 :(得分:1)

define声明一个常量,在脚本操作期间可以访问(仅限于php,这意味着只在服务器上)。

  1. 这不是变量
  2. 它不会在页面加载之间持续存在(所以当你点击另一个php文件时,这个没有定义)。
  3. 至于不允许热链接 - 例如,您可以检查HTTP Referer,但它可能会被欺骗。

答案 1 :(得分:1)

制作一个php-proxy thingy ..然后你.load('jsproxy.php?url=' + $(this).attr('href'));

我不太了解php,但你应该只定义安全,并在网址中包含页面......

答案 2 :(得分:1)

您无法将您的安全变量从索引页面发送到下一页,并且不应将会话用于此目的,因为它将允许直接访问,因为会话始终在索引页面请求时启用。但你可以从服务器检查请求是否是xmlhttp(ajax)请求,带有以下函数作为load()函数请求,带有'xmlhttprequest'的HTTP_X_REQUESTED_WITH标题。

 function isAjax(){
   return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
 }
 if(!isAjax())
  {
    echo "no direct access"; exit(0);
  }