Могу ли я получить URL-адрес родительского окна iframe с PHP?

У меня есть iframe на веб-странице, и из iframe я хочу получить URL-адрес родительского окна. Да, я искал в Интернете, но я продолжаю получать решения с помощью JavaScript.

Итак, ваши ребята знают какие-либо решения, которые используют только PHP?

Ответ 1

Сценарий на стороне сервера никоим образом не знает ничего о клиентской стороне без прямой отправки данных, например, с помощью AJAX.

Если у вас есть контроль над самим iframe, вы всегда можете передавать переменные в строке запроса и обращаться к ним с помощью $_GET:

HTML

<iframe src="http://example.com/file.php?variable=value"></iframe>

PHP

<?php

    echo $_GET['variable'] // Outputs 'value'

?>

UPDATE (возможно, это возможно)

Возможно, существует способ использования $_SERVER['HTTP_REFERER']. HTML файл, содержащий iframe, отправляет некоторые заголовки, когда он запрашивает файл, а один из них - HTTP_REFERER. Я тестировал это на местном уровне, и, похоже, он работает.

Единственный недостаток заключается в том, что вы не имеете представления о том, является ли реферер iframe или нет. Опять же, если у вас есть контроль над iframe, вы можете передать переменную вместе с использованием метода выше, указав это iframe, и используйте метод ниже, чтобы динамически получить URL.

Например, пусть этот URL-адрес файла http://example.com/ :

<iframe src="http://example.com/file.php"></iframe>

Файл PHP, мы будем называть его file.php:

<?php
    echo $_SERVER['HTTP_REFERER']; // Should output http://example.com.
?>

Ответ 2

У меня была та же проблема, я запускал процедуру поиска в iframe и хотел иметь возможность создавать ссылки с других страниц, которые автоматизировали бы функцию поиска упомянутого iframe.

После прочтения все "может быть сделано только в javascript", я использовал это:

$topurl=$_SERVER['HTTP_REFERER'];
$q=substr($topurl,strpos($topurl,'=')+1);

Грубый, но эффективный для моих нужд. Я знаю, что вы можете получить фантазию и вырвать все параметры URL-адреса, но мне нужен только один поисковый запрос.

Ответ 3

Это не сработает, вы можете использовать JavaScript.