我收到了Warning: Cannot modify header information
。在WAMP上测试源代码时,我没有收到此错误。此外,在某些PHP中包含某些类,并且根据需要调用操作html的函数。任何人都可以指出我正确的方向吗?这是确切的错误和引用的文件。
警告:无法修改标头信息 - 已发送的标头 (输出始于 /home/content/39/8810539/html/pagoda/view/header.php:2)in 第9行/home/content/39/8810539/html/pagoda/controller/login.php
的login.php:
<?php
global $session;
global $view;
if (isset($_POST['login']))
{
if ($session->logIn($_POST["uname"],$_POST["password"]))
header("Location: $_SERVER[REQUEST_URI]");
else
$view->RenderMsg("Your username and/or password was incorrect.");
}
if (isset($_POST['logout']))
{
$session->logOut();
header("Location: $_SERVER[REQUEST_URI]");
}
?>
header.php片段:
<head>
<link rel="stylesheet" type="text/css" href="<?php echo BASEPATH; ?>/view/css/homepageStyle.css" />
</head>
<div id="header">
<div id="banner">
Pagoda
</div>
<div id="login">
<?php
//This controls the login/logout header on the top of each page.
global $session;
if ($session->isLoggedIn())
{
?>
<div id="nametag">
<form method="POST" name="logout" action="">
Welcome, <?php echo $session->getName()." (".$session->getRole().")"?>
<input name="logout" type="hidden" value="Log Out"/>
</form>
</div>
....
....
....
答案 0 :(得分:0)
BTW代码中的一些错误:
1)不要使用“?&gt;”,否则如果文件末尾有空格(某些编辑会这样做),您将收到相同的警告
2)你在“&lt;?php echo $ session-&gt; getName()...”中忘记了HTML转义:使用htmlspecialchars()
3)不要使用全局变量。从不。
4)逻辑和视图应该分开。
答案 1 :(得分:0)
我用ob_start()解决了它。 ob_start首先将html写入缓冲区,然后在标题更改后将其写入浏览器。 ob_start在你的html代码之前。使用ob_end_flush();在header()之后关闭缓冲区是不必要的,但
header.php片段:
<?php
ob_start()
?>
<head>
<link rel="stylesheet" type="text/css" href="<?php echo BASEPATH; ?>/view/css/homepageStyle.css" />
</head>
<div id="header">
<div id="banner">
Pagoda
</div>
<div id="login">
<?php
//This controls the login/logout header on the top of each page.
global $session;
if ($session->isLoggedIn())
{
?>
<div id="nametag">
<form method="POST" name="logout" action="">
Welcome, <?php echo $session->getName()." (".$session->getRole().")"?>
<input name="logout" type="hidden" value="Log Out"/>
</form>
</div>
....
....
....
的login.php
<?php
global $session;
global $view;
if (isset($_POST['login']))
{
if ($session->logIn($_POST["uname"],$_POST["password"]))
header("Location: $_SERVER[REQUEST_URI]");
ob_end_flush();
else
$view->RenderMsg("Your username and/or password was incorrect.");
}
if (isset($_POST['logout']))
{
$session->logOut();
header("Location: $_SERVER[REQUEST_URI]");
ob_end_flush();
}
?>