php header方法不重定向

时间:2012-12-16 15:55:51

标签: php mysql header

  

可能重复:
  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 }

我搜索但找不到任何答案。我该如何解决或问题是什么?

4 个答案:

答案 0 :(得分:1)

只应在将任何HTML呈现到页面上之前调用

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客户端身份验证的常见设计模式。

http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_2391-PHP-login-logout-and-easy-access-control.html

最好的问候,〜雷

答案 3 :(得分:0)

您可以将ob_start()添加到PHP脚本的顶部。即使您已经开始创建浏览器输出流,也可以发出header()。它还可以使您的脚本更快,因为将避免重复调用发送浏览器输出,只需在脚本末尾进行一次调用。