如何处理登录页面PHP的重定向

时间:2018-10-20 15:36:35

标签: javascript php redirect

我最近已从localhost移到我的实时网站。我有一个简单的PHP登录页面。用我的mysql表检查用户详细信息之后,如果用户名存在并且他们提供了该用户名的有效密码,它们将被重定向到主页。我使用的是内置于PHP的标头函数,但是由于我现在正在使用在线网站,因此似乎不再起作用。

经过进一步研究,似乎页面加载后无法使用标题标签。因此,我不会回显脚本标签以将window.location重定向到我的主页。问题在于,当新位置被重定向到它时,好像我要加载的实际网页之前正在加载其他网页(这可能是由于我事实发生后有额外的错误处理代码)。使用此方法时,还有其他人会遇到这种情况吗?有更好的方法来解决这个问题吗?

这是我目前使用的,以防万一。

echo '<script>window.location.href = "home.php";</script>';

2 个答案:

答案 0 :(得分:1)

  

我正在使用PHP内置的标头函数,但这似乎是   现在,我在我的实时网站上不再工作。

标头必须是脚本输出的第一件事,否则它们将无法工作。 PHP具有一个方便的功能,称为output buffering,该功能会暂时保留输出,直到脚本执行完毕。这样,您就可以在代码中的任何地方调用header(),然后PHP会自动为您处理将标头移到输出的开头。因此,如果启用了输出缓冲,则可以将标头放置在任何位置,并且仍然可以使用。如果您未启用输出缓冲,则必须在最开始处放置标题。

我敢打赌,您在标题之前生成输出,并且本地PHP安装启用了输出缓冲,而远程主机则没有。您可以通过以下两种方法之一来解决此问题:

  • 更新代码以确保在调用header()之前没有任何输出。
  • 通过在php.ini中设置output_buffering = 1在主机上启用输出缓冲。

答案 1 :(得分:0)

我最近了解到您可以使用meta标签来做到这一点: <meta http-equiv="refresh" content="2;url=http://example.com/" />