[英]Getting Warning: Cannot modify header information on GoDaddy but not Wamp
我收到Warning: Cannot modify header information
。 在WAMP上测试源代码时,我没有收到此错误。 此外,在某些PHP中,还包含某些类,并且根据需要调用用于操纵html的函数。 谁能指出我正确的方向? 这是确切的错误和引用的文件。
警告:无法修改标头信息-已在/ home / content / 39/8810539 / html / pagoda /中发送的标头(输出始于/home/content/39/8810539/html/pagoda/view/header.php:2)第9行的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>
....
....
....
顺便说一句您的代码中的一些错误:
1)不要使用“?>”,否则如果文件末尾有空格,则会收到相同的警告(某些编辑器会这样做)
2)您忘记了在“ <?php echo $ session-> getName()...”中转义的HTML:使用htmlspecialchars()
3)不要使用全局变量。 决不。
4)逻辑和视图应分开。
我用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();
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.