18

我在网页上有一个 iframe,我想从 iframe 获取父窗口的 url。是的,我一直在网上搜索,但我一直在使用 JavaScript 获得解决方案。

那么你们知道任何只使用 PHP 的解决方案吗?

4

3 回答 3

23

如果没有客户端显式发送数据(例如使用 AJAX),服务器端脚本无法了解客户端的任何信息。

如果您可以控制 iframe 本身,则始终可以在查询字符串中传递变量并使用以下命令访问它们$_GET

HTML

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

PHP

<?php

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

?>

更新(这实际上可能)

可能有一种使用$_SERVER['HTTP_REFERER']. 包含 iframe 的 HTML 文件在请求文件时会发送一些标头,其中一个似乎是 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.
?>
于 2013-02-02T14:15:39.737 回答
6

我遇到了同样的问题,我在 iframe 中运行搜索例程,并希望能够从其他页面创建链接,从而自动执行所述 iframe 的搜索功能。

在阅读了所有“只能在 javascript 中完成”之后,我使用了这个:

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

粗鲁但对我的需要有效。我知道您可以花哨并分解 url 的所有参数,但我只需要一个搜索词。

于 2013-12-10T10:09:10.757 回答
0

那行不通,您可以使用JavaScript。

于 2013-02-02T14:13:28.287 回答