我有一个纯PHP页面,其目的是做很多事情(加载需要4-5秒),然后将用户重定向到另一个页面。
最近,我在PHP脚本开头之前添加了一些HTML(一个精确的加载gif),以便访问者知道页面正在做什么,希望不会关闭页面。
问题是现在我不能使用PHP的头函数重定向访问者,因为HTML代码在PHP可以发送之前发送头文件。
在我的情况下,我需要一种真正可靠的方式来重定向访问者。我希望它适用于任何设备(台式机,手机,平板电脑等)和任何浏览器。现在,我认为回显元刷新标签是实现这一目标的最佳方式。你觉得怎么样?
答案 0 :(得分:2)
浏览器在读取元标记后可能不会等待请求完成,这可能会使您的脚本处于不一致状态。您可以通过添加javascript来破解这一点,该javascript在页面上查找仅在脚本完成后发送的标记,并从js重定向。但是你真正想做的是发送一个简短的响应,仅使用你的加载gif,并对服务器进行ajax调用以进行操作,并在获得成功响应后进行重定向。但是,您应该首先在原始页面上完成该操作。
答案 1 :(得分:1)
您可以使用javascript重定向用户。使用
window.location.href=""
或
class Node(object):
def __init__(self):
self.children = collections.defaultdict(lambda:self.__class__())
self.stuff = ...
def __str__(self,depth=0):
if self.children:
return str(self.stuff)+'\n'+'\n'.join([' '*depth+k+' ' + v.__str__(depth+1) for k,v in self.children.items()])
else:
return str(self.stuff)
def get_path(self,path):
node = self
while path:
node = node.children[path.pop(0)]
...
答案 2 :(得分:1)
Location: http://foobar.com
<meta http-equiv="refresh" content="5; url=http://foobar.com/">
<a href="http://foobar.com">Redirecting to http://foobar.com. or click here</a>
这样,如果客户端浏览器不支持自动重定向的标准,那么他们机会性地有一个链接可以跟进。
我不打算使用Javascript,因为如果它们不符合上述标准,那么此类捕获可能不会让任何人受到影响。
这是非常标准的做法。