不能修改报头信息-在本地主机上工作,但不能在WebServer上


Cannot Modify Header Information - Working on LocalHost, but not on WebServer?

我目前正在为我臭名昭著的Minecraft投票系统制作控制面板-然而我遇到了一个问题。我的代码在XAMPP上工作得很好-但是在我的web服务器上不工作。

我有两页。一个是登录页面,一个是索引。登录页面简单地获取SQL数据库的用户信息,并检查它,登录用户,并使用html元刷新重定向,因为web服务器不允许使用PHP标头。

索引页简单地写着"欢迎$user,"。所有这些都像XAMPP上的魅力一样工作,但是在我的web服务器上工作得不是很好。当登录时出现这个错误:

Warning: Cannot modify header information - headers already sent by (output started at /home/linkycra/public_html/MonlotronCP/login.php:3) in /home/linkycra/public_html/MonlotronCP/login.php on line 136

这里是login.php代码- http://puu.sh/1IrEu.png

这里是index.php代码- http://puu.sh/1IrF1.png

谢谢!

您已经将HTML发送到浏览器后正在使用setcookie()setcookie()将发送一个HTTP报头,但会出错,因为您已经在表单之前发送了HTML。这个错误只在你登录的时候出现,因为那是setcookie()被触发的时候。一旦内容已经输出到浏览器,你就不能再发送HTTP报头了。

它在一台机器上工作而不是在另一台机器上工作的原因是一台机器上有error_reporting或设置为显示,而另一台没有,或者它们处于不同的错误级别。在输出任何内容之前,您需要在<html><!DOCTYPE>以及任何空白空间之前重构setcookie()运行的代码。

标题函数前必须有一些html或空白,请检查

查看本页的示例:http://php.net/manual/en/function.headers-sent.php

它可以帮助你追踪到它发生在哪里

可以通过输出缓冲来解决,但如果是打印问题,您应该解决它。