我使用以下脚本在页面上加载内容而不刷新它。我以这种方式加载的页面不应作为独立页面访问。
<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?
谢谢!
答案 0 :(得分:1)
define
声明一个常量,在脚本操作期间可以访问(仅限于php,这意味着只在服务器上)。
至于不允许热链接 - 例如,您可以检查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);
}