PHP:检查iframe中是否显示页面?

时间:2012-09-24 23:09:59

标签: php iframe

我想使用PHP来检查页面是否在iframe中加载。优选地,但不是必需的,我希望在适用的情况下拥有父母的网址。谢谢。

4 个答案:

答案 0 :(得分:8)

Php无法告知请求所针对的上下文。它除了传递给它并作为服务器变量可用之外什么都不知道。您可以将自己的get参数添加到将页面放入iframe时使用的网址,但是否则您运气不佳。

答案 1 :(得分:4)

JavaScript是必需的; PHP完全没有办法可靠地知道。在JavaScript中,您可以使用

window.top === window.self;

答案 2 :(得分:0)

,在 2021 年,可以使用 get_header PHP 的函数检查 URL 是否嵌入 iframe,我在下面的函数中做了这个:

public function allowEmbed($url = 'https://stackoverflow.com/') {

        try {
            $headers = get_headers($url);
        } catch (\Exception $e) {
            $headers = [];
        }

        $blackList = [
            'x-frame-options: sameorigin',
            'x-frame-options: allow-from',
            'x-frame-options: deny',
        ];

        $headers = array_map('strtolower', $headers);

        $check = array_intersect($blackList, $headers);

        if(!$check) {
            return ['status' => 1, 'message' => 'Passed'];
        } else {
            return ['status' => 0, 'message' => 'Fail'];
        }   
}

答案 3 :(得分:-1)

我认为有可能通过PHP全局变量$ _SERVER [" HTTP_REFERER#34;]来检测iframe。在这个变量中是父窗口的URL。