我使用简单的PHP脚本和MySQL在 http://thetpg.tk缩短了一小段时间。
它的作用是获取id
并在SQL数据库中将其匹配,并使用header()
将其重定向到数据库中找到的指定链接。
但是如果我有一个带有源代码的框架集,就像http://thetpg.tk
那样,重定向的链接被加载到框架而不是父窗口。
例如看看
的页面来源我希望(1)加载(3)作为父级,但只需在(2)中的函数中进行更改。 那么有像
这样的功能吗? header(Location:http://thepirategamer.tk/music.php, '_parent');
在PHP中,还是有其他方法来实现它?
注意:我无法改变(2)中的任何内容。
提前致谢! :)
答案 0 :(得分:4)
有一些树解决方案可以帮助您实现此目的:
如果您使用echo
生成html代码,此解决方案可能涉及php,当您需要输出a
标记时,应确保添加属性target='_parent'
<?php
echo '<a href="' . $url . '" target="_parent"> Click here </a>';
?>
此解决方案的问题在于,如果您需要在父窗口中从您不拥有的页面(在iframe内)重定向,则它不起作用。第二个解决方案解决了这个问题
这第二个解决方案完全是客户端的,这意味着你需要使用一些javascript。你应该定义一个javascript函数,在每个target='_parent'
标记中添加a
function init ()
{
TagNames = document.getElementById('iframe').contentWindow.document.getElementsByTagName('a');
for( var x=0; x < TagNames.length; x++ )
TagNames[x].onclick = function()
{
this.setAttribute('target','_parent');
}
};
现在你需要做的就是在像这样加载正文时调用这个函数
<body onload="init();"> ... </body>
此解决方案的问题在于,如果您的链接包含此href="#"
之类的锚,则会将父窗口更改为子窗口要解决此问题,您必须使用第三个解决方案< / p>
此解决方案也是客户端,您必须使用javascript。它类似于第二种解决方案,除了您必须在重定向之前测试链接是外部页面的URL还是锚点。所以你需要定义一个函数,如果它是一个指向外部页面的链接,则返回true;如果它是一个简单的锚点,则返回false,然后你必须像这样使用这个函数
function init ()
{
TagNames = document.getElementById('iframe').contentWindow.document.getElementsByTagName('a');
for( var x=0; x < TagNames.length; x++ )
TagNames[x].onclick = function()
{
if ( is_external_url( this.href ) )
document.location = this.href;
}
};
并且还需要在加载正文时调用此函数
<body onload="init();"> ... </body>
不要忘记定义is_external_url()
以下是获取最后一个孩子的网址的解决方案,它只是一个简单的函数,可以从paages中的框架和iframe查看并获取网址
function get_last_url($url)
{
$code = file_get_contents($url);
$start = strpos($code, '<frameset');
$end = strpos($code, '</frameset>');
if($start===false||$end===false)
{
$start = strpos($code, '<iframe');
$end = strpos($code, '</iframe>');
if($start===false||$end===false)
return $url;
}
$sub = substr($code, $start,$end-$start);
$sub = substr($sub, strpos($sub,'src="')+5);
$url = explode('"', $sub)[0];
return get_last_child($url);
}
$url = get_last_url("http://thetpgmusic.tk/");
header('Location: ' . $url);
exit();