PHP, HTTP_REFERER не работает на iframe? - PullRequest
2 голосов
/ 18 декабря 2009

Хорошо, вот моя ситуация.

У меня есть страница index.php, которая является главной (флеш-сайт)

У меня есть еще одна страница с именем iframe.php, которая содержит iframe index.php

Другая страница, test.php. Внутри есть 2 ссылки, первая ссылка непосредственно на index.php, другая ссылка на iframe.php

Я проверял:

  • Я нажимаю 1-ую ссылку, когда я отслеживаю / эхо HTTP_REFERER, отображается «test.php», но

  • Я нажимаю на вторую ссылку, когда я прослеживаю / повторяю HTTP_REFERER, отображается «iframe.php».

Почему отображается «iframe.php»? HTTP_REFERER не работает на iframe ??

Есть ли какой-нибудь способ получить "test.php", когда я нажимаю на вторую ссылку?

Исходный код для: index.php

<html>
<head> // Some headers information
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
var flashvars = {};
    <?php
if(!empty($_SERVER['HTTP_REFERER'])){
?>
    flashvars.link       =  '<?php echo $_SERVER['HTTP_REFERER']; ?>';
<?php
}
?>
var params = {};
var attributes = {};
swfobject.embedSWF("main.swf, "content", "100%", "100%", "9", "expressInstall.swf", flashvars, params, attributes);
</script>
</head>
<body>
    <div id="content">
    <a href="http://www.adobe.com/go/getflashplayer">
            <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
        </a>
    </div>
</body>
</html>

Исходный код для iframe.php

<html> headers tag
...
<body>
<center><iframe src="index.php" mce_src="index.php" frameborder="0" height="500" scrolling="no" width="500"></iframe></center>
</body>
</html>

Исходный код для test.php:

....
<a href="iframe.php" target="_blank">This is Iframe</a> <br><br>
....
<a href="index.php" target="_blank">This is normal link</a> <br><br>

Ответы [ 2 ]

1 голос
/ 18 декабря 2009

В любом случае вы видите результат index.php. И вот почему:

Сценарий 1)

Когда вы нажимаете index.php по ссылке в test.php, она загружает index.phptest.php в качестве HTTP_REFERER).

Сценарий 2)

Когда вы нажимаете iframe.php по ссылке в test.php, она загружает iframe.php, которая внутренне загружает index.php в тег <iframe>iframe.php как HTTP_REFERER).

0 голосов
/ 18 декабря 2009

К сожалению, нет. Значение HTTP_REFERER для страницы, отображаемой внутри iframe, всегда будет родительской страницей, содержащей iframe.

HTTP_REFERER имеет тенденцию быть немного сложным, чтобы рассчитывать в любом случае. Если вы можете избежать построения какой-либо важной логики вокруг нее, это хорошая идея.

Я полагаю, вы используете php - возможно, вы могли бы использовать сеанс для хранения последней страницы, которую посетили при загрузке test.php? На test.php вы устанавливаете $_SESSION['referringPage'] = 'test.php';. Затем в index.php вы читаете значение $_SESSION['referringPage'] и получаете ту же информацию независимо от того, была ли страница загружена в iframe.

...