可能重复:
PHP 5.3 does not display error messages
Headers already sent by PHP
我有一个main.php文件。它加载我的页眉,正文和页脚部分。身体部位灵活。在我的索引页面中,站点决定活动页面,因此在主文件中,活动页面body方法有效。在登录页面中,我检查用户,如果它有效,我想重定向到另一个页面。在这种情况下会出现问题。
的index.php:
if(isset($_GET["page"]))
{
$jsPages.="\n\t<script src='pages/".$_GET["page"]."/resources/".$_GET['page'].".js' type='text/javascript' charset='utf-8'></script>";
$cssPages.="\n\t<link rel='stylesheet' href='pages/".$_GET['page']."/resources/".$_GET['page'].".css' type='text/css' media='screen' title='no title' charset='utf-8'/>";
include("pages/". $_GET["page"] ."/_index.php");
}
include("template/$Template/_index.php");
_index.php(主)
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body">
<div ><?php userpanel(); ?></div>
<div id="header"><?php pageHeader(); ?></div>
<div id="horiz-menu" class="splitmenu"><?php horizmenu();?></div>
<div id="sub-menu"></div>
<?php body();?>
<div id="bottom-menu"></div>
<div id="footer"><?php footer();?></div>
</body>
</html>
<?php
的login.php:
<?php
function body(){
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (!$_POST["username"] || !$_POST["password"])
{
die("You need to provide a username and password.");
}
// username and password sent from Form
$myusername=addslashes($_POST['username']);
$mypassword=addslashes($_POST['password']);
$sql="SELECT id FROM members WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1)
{
session_register("myusername");
$_SESSION['login_user']=$myusername;
header("location: pages/welcome/_index.php");
exit();
}
else
{
$error="Your Login Name or Password is invalid";
}
}
?>
<form action="" method="post">
<label>UserName :</label>
<input type="text" name="username"/><br />
<label>Password :</label>
<input type="password" name="password"/><br/>
<input type="submit" value=" Submit "/><br />
</form>
<?php }
我搜索但找不到任何答案。我该如何解决或问题是什么?
答案 0 :(得分:1)
header()。
答案 1 :(得分:1)
在您已将一些数据发送到客户端后,您无法使用标头。在偶数或其他任何内容发送之前,您必须将支票放在页面顶部。
来自:http://php.net/manual/en/function.header.php
请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。
答案 2 :(得分:1)
另外,您可能需要注意这一点。该脚本依赖于已从现代PHP中删除的函数。请参阅此网页上的大红色警告标签。
http://php.net/manual/en/function.session-register.php
您可以阅读这篇文章。它显示了一些用于PHP客户端身份验证的常见设计模式。
最好的问候,〜雷
答案 3 :(得分:0)
您可以将ob_start()
添加到PHP脚本的顶部。即使您已经开始创建浏览器输出流,也可以发出header()。它还可以使您的脚本更快,因为将避免重复调用发送浏览器输出,只需在脚本末尾进行一次调用。