Подтвердить что ты не робот

Проверьте, находится ли сайт внутри iframe

Кто-нибудь знает, можно ли проверить, находится ли сайт внутри iframe с PHP.

Я знаю, что это возможно с помощью javascript, но я не смог найти какой-либо пример с PHP?

4b9b3361

Ответ 1

PHP никогда не находится в iframe. PHP выполняется на стороне сервера и генерирует выходные данные, такие как HTML, Javascript или текст. Вывод, сгенерированный PHP, может создавать или находиться внутри iframe, но не сам PHP.


ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Что касается дополнительных деталей, которые вы добавили в комментариях (чтобы вы хотели различать запросы прямо на свой сайт и запросы через приложение Facebook), вы можете использовать несколько методов:

  • $_ SERVER [ 'HTTP_REFERER']:

Вы можете проверить реферер, чтобы определить, был ли запрос получен с URL-адреса Facebook, с другой страницы на вашем собственном сайте, с стороннего сайта или, если это был прямой трафик. Этот метод не является надежным, но может предоставить больше информации, чем ваше приложение в настоящее время получает.

  1. Отдельные URL

Вы можете создавать отдельные URL-адреса для приложения, запущенного на вашем сайте и в версии для Facebook. Используя $_SERVER['REQUEST_URI'], вы можете легко определить, было ли доступно ваше приложение через "yoursite.com/fbapp" или "yoursite.com/localapp". Оба URL-адреса могут ссылаться на одни и те же скрипты через Apache mod_rewrite или решение наложения псевдонимов по вашему выбору.

  1. Параметры URL

Этот метод, возможно, проще всего реализовать. Если вы можете указать параметры URL-адреса при предоставлении URL-адреса приложения для Facebook, просто добавьте параметр. Например:

?access_method=facebook

В PHP вы можете легко проверить наличие и значение параметра access_method и при необходимости предпринять действия.

Ответ 2

Нет, PHP - серверная. Он не знает, находится ли он в iframe.

Ответ 3

Вы можете проверить $_SERVER['HTTP_REFERER']. На это нельзя доверять, поскольку браузеры не всегда предоставляют эту информацию. Кроме того, HTTP_REFERER не всегда означает iframe, но для конкретных случаев это хорошо.

Ответ 4

<?php
if(!$_SERVER['HTTP_REFERER'] == 'YourFrameURL') {
    // Site is NOT loaded from iframe
    die('Please load this page from YourFrameURL');
}
else {
    // Site IS loaded from iframe: display content
?>

Обратите внимание, что $_SERVER['HTTP_REFERER'] полностью не является надежным: его можно изменить. Также обратите внимание, что этот метод является "https-sensitive". Если кадр загружен из https://x, а YourFrameURL установлен в http://x, он не будет работать. Исправьте это, используя:

if(!$_SERVER['HTTP_REFERER'] == 'http://YourFrameURL' or !$_SERVER['HTTP_REFERER'] == 'https://YourFrameURL') {