PHP:如何检测外部访问者的直接请求?

标签 php jquery dialog http-referer

我想检测/阻止/转发外部访问者的直接请求。有些脚本应该只显示在 jQuery 对话框中。

我当前的代码:

<script>
$(".dialog").click(function() {
    // some code for validation
    // ...
    $("#dialog").load(this.href).dialog();
});
</script>    

<a href="http://domain.de/path/to/form/" class="dialog">Open me in a dialog</a>

效果很好,但是如果我在新的选项卡/窗口中打开此链接(例如,通过单击鼠标中键),表单将显示为“裸”。

在这种情况下,我想将用户转发到引用的页面,例如:

if ($requester != $server) {
    header ("Location: " . $_SERVER["HTTP_REFERER"];
}

如何检测 $requester 和 $server?我不想阻止每个脚本或整个目录!

提前致谢!

最佳答案

添加@Dharman 的建议 jQuery 向其所有名为 HTTP_X_REQUESTED_WITH 的 ajax 请求添加一个 header ,因此您可以简单地在 $_SERVER 全局数组中检查此 header 。

例子:

if($_SERVER['HTTP_REFERER']!=$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"])
{
    // check if the request is ajax 
    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
          $_SERVER['HTTP_X_REQUESTED_WITH']  == 'XMLHttpRequest' ){
          // ajax content loading
    }

    header ("Location: index.php");
}

关于PHP:如何检测外部访问者的直接请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13895543/

相关文章:

javascript - JS 和 YUI 中的这些结构是什么?

php - 函数结构不遵循时遇到问题(PHP)

javascript - 在 jQuery 中发出 Ajax 请求时,事件仅触发一次

javascript - 真正具有特定类别的下一个元素

html - CSS - 在对话框缩放时将 top 属性值限制为 0

java - 在 Firebase 上传的自定义对话框上设置 ProgressBar

c# - 如何防止在 WPF 中的可编辑控件中焦点时使用 "Enter"键关闭窗口

PHP FTP : Access Denied

php - 使用 jQuery 从 HTML 页面重定向到 PHP 页面

jQuery的index()函数返回对象而不是int