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

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

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

Solutions Collecting From Web of "Проверьте, находится ли сайт внутри iframe"

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


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

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

  1. $ _SERVER [ 'HTTP_REFERER']:

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

  1. Отдельные URL-адреса

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

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

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

 ?access_method=facebook 

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

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

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

 <?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') {