用PHP登录后转到下一页

时间:2014-04-24 13:01:52

标签: php html mysql redirect

我正在做一个网页的作业。 我创建了索引页面作为登录页面,其中包含用户名输入,密码输入和登录按钮。

当我点击按钮时,一个php代码(下面已经写过)已经执行:它使用MySQL进行登录。

我的重定向登录问题。如果键入的用户名和密码没问题,页面应该转到下一页(例如,下一页的链接是http://stackoverflow.com)。

我使用header("location:http://stackoverflow.com");转到下一页,但是我遇到以下错误: Warning: Cannot modify header information - headers already sent by (output started at /users/kzr/www/index.php:60) in /users/kzr/www/index.php on line 14

我已经使用ob_start()尝试了ob_end_flush(),但他们没有改变这种情况:错误是相同的。

有人可以帮助我开始使用这段代码吗?

注意:PHP和HTML代码都在一次文件中,但我把它们分开了。

PHP代码:

if(isset($_POST["login"])){
    $username=$_POST["username"];
    $password=$_POST["password"];
    $connect=mysql_connect("127.0.0.1","kzr_zetr","350adagsertesborda");
    if($connect){
        $db=mysql_select_db("kzr_zetr");
        if($db){
            $query=mysql_query("SELECT * FROM login WHERE username = '$username' AND password = '$password'");
            $rowcount=mysql_num_rows($query);
            if($rowcount>0){
                $uri="http://kzr.bplaced.de/session/?username=".$username;
                header('Location:'.$uri);
                print 'sucess';
            }else{
                echo "<script type='text/javascript'>login_f_val_phperr();</script>";
                print 'fail';
            }
        }
    }
}

HTML代码:

<!DOCTYPE html>
<html>
<head>
    <title>Bejelentkezés | ZETR</title>
    <meta charset="utf-8" />
    <meta name="author" content="Kókai Z. Ronald" />
    <meta name="contact" content="zr.kokai@gmail.com" />
    <meta name="description" content="(Konrad) Zuse Elektronikus Tanulmányi Rendszer" />
    <meta name="keywords" content="konrad, zuse, konrad zuse, etr, rendszer, tanulmányi rendszer" />
    <meta name="subject" content="Alkalmazott Informatika Házi Feladat Varga István Tanár Úrnak" />
    <base href="http://kzr.bplaced.de" />
    <link rel="stylesheet" type="text/css" href="/f/font/ubuntu/ubuntu.css" />
    <link rel="stylesheet" type="text/css" href="/f/css/zetr.css" />
    <link rel="stylesheet" type="text/css" href="/f/css/login.css" />
    <link rel="shortcut icon" type="image/x-icon" href="/f/img/favicon.ico" />
    <script type="text/javascript" src="/f/script/login-f.js"></script>
</head>
<body>
<div id="container">
    <h1>Zuse</h1>
    <h2>Elektronikus Tanulmányi Rendszer</h2>
    <div id="loginbox">
        <form name="login-f" action="" onsubmit="return login_f_val()" method="post">
            <input type="text" name="username" id="username" placeholder="Felhasználónév" autocomplete="off" />
            <input type="password" name="password" id="password" placeholder="Jelszó" />
            <input type="submit" name="login" id="login" value="Bejelentkezés" />
        </form>
    </div>
</div>
</body>
</html>

3 个答案:

答案 0 :(得分:1)

尝试在标题后面放一个退出:

header(...);exit;

答案 1 :(得分:0)

标题必须高于任何HTML(甚至在doctype之前),并且在回显任何html之前。你需要尽可能高地做到这一点。并删除PRINT成功并失败。

答案 2 :(得分:0)

这意味着index.php的第60行已经导致标题被发送;在发送任何HTML(或纯文本)输出之前,请确保headers()调用是您做的第一件事。