我有一个使用两个框架的页面,顶部框架显示用户名,底部框架显示该用户的网站。然而,在底部框架显示网站之前,它会做一些后端数据库工作。
main html的相关代码(注:每次刷新传入的变量都会发生变化):
<!DOCTYPE html>
<html lang="en">
<head>
<META HTTP-EQUIV="Refresh" CONTENT="30">
</head>
<frameset rows="20%, 80%">
<frame src="search-results.php?user=<?php echo $row['user'];?>" name="content1">
<frame src="a3track.php?user=<?php echo $row['user'];?>&url=<?php echo $row['url'];?>" name="content2">
</frameset>
</html>首页相关代码(search-results.php ts.php):
<?php
$user=$_GET['user'];
echo '<html><head></head><body>' . $user . '</body></html>';
?>底层框架页面(a3track.php)相关代码:
<?php
$user=$_GET['user'];
$url=$_GET['url'];
// do some database work here
//Then redirect to client's website
$redirect_to = "http://" . $url;
echo '<script>
<!--
window.location = "'.$redirect_to.'"
-->
</script>';
?>应该发生的情况是,客户端的网站在底部框架中显示30秒,但在完成数据库工作后,框架仍为空白。
如果我在一个独立的窗口中单独运行页面a3track.php,它会工作,在完成数据库工作后正确显示重定向的网站,但它在框架内不会这样做。
我猜a3track.php的脚本部分需要改变一些东西,但我不知道是什么,在我仔细阅读寻找答案的大量网站和页面中找不到任何线索。
发布于 2018-03-29 21:05:11
调试被弃用的特性是很困难的(在相当长的一段时间内)。使用框架不再是一个好主意,它可以工作,但你可以非常确定它不会再工作,并且每个浏览器可以很不同地处理它。如果你想坚持你的计划,你可以试试php-redirect
header('Location: http://www.example.com');但我不能保证这会奏效,这只是一个猜测。
我建议把所有东西都换成现代的系统。您可以构建一个页面,其中包含一个iframe,您可以在其中加载客户端网站。因此,您可以在页面本身上执行所有数据库操作,完成后,页面将显示加载的iframe,它指向客户端网站。我很确定这会解决你的一些问题。
https://stackoverflow.com/questions/49556335
复制相似问题