php代码没有将我重定向到页面

时间:2014-07-22 23:16:30

标签: php mysql

我有一个login.phpregister.php页面。

register页面工作正常,但我的login页面存在问题。

当我成功登录时,它应该将我重定向到一个名为member.php的页面,而只是停留在同一页面上而不是在哪里。

以下是login.php页面的代码,我认为可能会出现问题我已尝试将header("Location: member.php");替换为echo("Success")并且有效:

的login.php

<!doctype html>
<html>
    <body>
        <p><a href="register.php">Register</a> | <a href="login.php">Login</a></p>
        <h3>Login Form</h3>
        <form action="" method="POST">
            Username: <input type="text" name="user"><br />
            Password: <input type="password" name="pass"><br /> 
            <input type="submit" value="Login" name="submit" />
        </form>

<?php

if(isset($_POST["submit"])) {
    if(!empty($_POST['user']) && !empty($_POST['pass'])) {
        $user=$_POST['user'];
        $pass=$_POST['pass'];

        $con=mysql_connect('localhost:8889','root','root') or die(mysql_error());
        mysql_select_db('user_registration') or die("cannot select DB");

        $query=mysql_query("SELECT * FROM login WHERE username='".$user."' AND password='".$pass."'");
        $numrows=mysql_num_rows($query);

        if($numrows!=0) {
            while($row=mysql_fetch_assoc($query)) {
                $dbusername=$row['username'];
                $dbpassword=$row['password'];
            }

            if($user == $dbusername && $pass == $dbpassword) {
                session_start();
                $_SESSION['sess_user']=$user;
                header("Location: member.php");
            }

        } else {
            echo "Invalid username or password!";
        }

    } else {
        echo "All fields are required!";
    }
}

?>

    </body>
</html>

member.php

<?php 
session_start();

if(!isset($_SESSION["sess_user"])) {
    header("location:login.php");
} else {

?>
    <!doctype html>
    <html>
        <body>
            <h2>Welcome, <?=$_SESSION['sess_user'];?>! <a href="logout.php">Logout</a></h2>
        </body>
    </html>
<?php } ?>

数据库:http://i.stack.imgur.com/Eyfud.png

3 个答案:

答案 0 :(得分:1)

在任何html之后,您无法使用header(...)设置标头。您可以使用输出缓冲解决此问题。尝试将以下内容添加到login.php的顶部(即在您的doctype声明之前)

<?php
ob_start();
?>

http://php.net/manual/en/function.ob-start.php

答案 1 :(得分:0)

您必须在任何其他输出之前发送header("Location: member.php")。所以首先检查是否必须重定向用户(如果是,则执行此操作),然后输出<!doctype html>上的所有内容。

答案 2 :(得分:0)

你可以试试这个。

if($user == $dbusername && $pass == $dbpassword) 
{
    session_start();
    $_SESSION['sess_user']=$user;
    echo "<script language='javascript'> window.location='member.php'; </script>";
}

member.php

if(!isset($_SESSION["sess_user"])) {
    echo "<script language='javascript'> window.location='login.php'; </script>";
}