为什么我不能重定向到另一页

时间:2013-12-08 19:09:14

标签: php redirect http-headers

这段代码有什么问题? 它正确创建会话但不重定向我,“标题”之前没有“回声”。

if(isset($_POST['login'])){
        include('../maincore/connect-db.php');
        $username=$_POST['username'];
        $password=$_POST['password'];
        $result = mysql_query("SELECT * FROM supporter WHERE username='$username'")
        or die(mysql_error());
        $row = mysql_fetch_array($result);
        $pass=$row['password'];

        if($password==$pass && $password!=''){
            $_SESSION['username']=$username;
            $_SESSION['name']=$row['name'];
            $_SESSION['family']=$row['family'];
            $_SESSION['id']=$row['id'];
            $_SESSION['type']=$row['type'];
            header('location: works.php');
        }else{
            header('location: index.php');
        }
    }

2 个答案:

答案 0 :(得分:0)

如果这是您的真实代码,您是否应该使用sha1或某种不可逆的哈希密码?只是..想知道..

刚试过你的代码,事情在我的结尾工作正常..所以你必须给我们更多关于你的错误日志的信息

答案 1 :(得分:0)

http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Response_message

文档标题应在文档内容之前发送。

PHP实时执行,当我请求页面时,页面未被评估和发送,因此当您编写文档开始发送文档时,不能再向标题添加标题。

你的问题不是你在标题之前回应的东西。

错误示例:

<?php
    session_start(); // Send the session id header.
    echo "This is a rawr text"; // Print something to the document
    header("location: index.php"); // And this line will throw a error cause you already writed in the document.
?>

另一个错误:

<?php
    session_start();
?>
<body>
Inside of body
</body>
<?php
    header("location: index.php"); // this will throw a error cause the text upside has been already sent.
?>

解决方案: 在写入文档之前,请输入您的代码( header()函数。