PHP重定向使用会话

时间:2014-01-21 20:07:09

标签: php html session redirect

我创建了一个PHP票务系统。将我的脚本上传到网页时,重定向到第二页时出现以下错误:

  

警告:无法修改标题信息 - 已在第29行开始的...输出已发送的标题。

使用wampserver在我的本地电脑上进行开发时没有出现此错误。

票证PHP包含两个页面:

  1. 第一页:HTML表单,PHP在点击提交后验证输入。如果一切正常==>重定向到第二页。
  2. 第二页:选择门票。
  3. 我意识到我收到此错误,因为我在重定向到另一个页面之前输出HTML。我该如何解决这个问题? (因为我必须输出HTML)

    亲切的问候

3 个答案:

答案 0 :(得分:0)

这条消息也使我多次受挫。这个解决方案应该解决它:

echo '<meta HTTP-EQUIV="REFRESH" content="0; url=newurl.php">';

content="0;中的数字零表示重定向前暂停的秒数。

我认为不用说你必须用所需的页面名称替换newurl.php ...只是说......

由于上面有它的批评者,虽然我自己使用它没有可观察到的负面结果,但这里有一些选择:

Redirects - alternative to "<meta http-equiv='refresh' />"?

Sam Dufel在上面的评论中链接的文章很神奇:

How to fix "Headers already sent" error in PHP

答案 1 :(得分:0)

在致电header()session_start()

之前,请确保您没有任何输出
  • 确保在所有php文件中<?php之前的任何地方都没有空格
  • 删除每个php文件末尾的?>
  • 在开发计算机上的error_reporting中将E_ALL更改为display_errors,将On更改为php.ini,然后再次运行您的应用程序并查看是否存在任何错误。修复它们。

答案 2 :(得分:-1)

冒这个殉难的风险,但你可以让javascript重定向你:

<?php
// instead of header('Location: someURL.php');
die('<script>window.location = \'someURL.php\';</script>');
?>

否则,请勿在{{1​​}}来电之前输出 ANYTHING 。遵循规则和快乐编码=)