dongqu9972 2016-02-19 09:46
浏览 30
已采纳

为什么登录后不会重定向头重定向?

I have a login page with login form , it should redirect to admin page when admin loggs in. This all worked, but four days ago it redirects again to login page. When I manualy type admin after login in url, admin page can be accessed.

My login page:

<html>
    <head>
        
        <?php include 'connect.php'; ?>
        <?php include 'functions.php'; ?>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, minimumscale=1.0, maximum-scale=1.0" />
        <title>Login - Admin</title>
        <link rel='stylesheet' href='style.css' type='text/css' />
        <?php include 'header.php'; ?>
    </head>
    <body >
        <div id="container_vanjski">
        <div id="container">
       
            <form method="post">
                <br/>
                <?php
                
                if(isset($_POST['submit'])){
                    $username = mysqli_real_escape_string($con, $_POST['username']);
                    $password = md5(mysqli_real_escape_string($con, $_POST['password']));
                    if(empty($username) or empty($password)){
                        echo '&nbsp<p>Polja su prazna !</p>';
                    }
                    else {
                        $check_login = mysqli_query($con, "SELECT id, user_level FROM korisnici WHERE username='".$username."' AND password='".$password."'");
                        
                                                             
                        if(mysqli_num_rows($check_login) == 1){
                            $run = mysqli_fetch_array($check_login);
                            $user_id = $run['id'];
                            $user_level = $run['user_level'];
                    
                            $_SESSION['user_id'] = $user_id;
                                header("Location: admin");                     
                        }else{
                            echo '&nbsp<p>Pogrešno Korisničko ime ili Lozinka!</p>';
                        }
                    }
                }
            ?>
                <br/>
                <div id="log"> 
            
            <label for="username">Korisničko ime:</label><input type="text" name="username" /><br />
            <label for="password">Lozinka:</label><input type="password" name="password" /><br />
            <br />
            <input type="submit" name="submit" value="Prijava" id="button" />
            
                </div>
        </form>
 
        </div>
        
        <?php include 'footer.php'; ?>
        </div>
    </body>
</html>

On my localhost server this is working, but on web server(BLUEHOST) this stopped working four days ago.

Does anyone know why is this happening?

</div>
  • 写回答

2条回答 默认 最新

  • douxin1956 2016-02-19 09:53
    关注

    You can't use header after html.

    Two solutions :

    Header before any html code (my favorite)

    buffering

     <?php
        ob_start( );
    ?>
    <html>
        <body>
            some output
            <?php
                ob_end_clean( );
                header( 'Location: http://www.google.com' );
                exit;
            ?>
        </body>
    </html>
    <?php
          ob_end_flush( );
    ?>
    

    Full code :

    <?php
        include 'connect.php';
        include 'functions.php';
    
        if(isset($_POST['submit'])){
            $username = mysqli_real_escape_string($con, $_POST['username']);
            $password = md5(mysqli_real_escape_string($con, $_POST['password']));
            if(empty($username) or empty($password)){
                $message = '&nbsp<p>Polja su prazna !</p>';
            }
            else {
                $check_login = mysqli_query($con, "SELECT id, user_level FROM korisnici WHERE username='".$username."' AND password='".$password."'");
    
    
                if(mysqli_num_rows($check_login) == 1){
                    $run = mysqli_fetch_array($check_login);
                    $user_id = $run['id'];
                    $user_level = $run['user_level'];
    
                    $_SESSION['user_id'] = $user_id;
                        header("Location: admin");                     
                }else{
                    $message = '&nbsp<p>Pogrešno Korisničko ime ili Lozinka!</p>';
                }
            }
        }
    ?>
    <html>
        <head>
    
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, minimumscale=1.0, maximum-scale=1.0" />
            <title>Login - Admin</title>
            <link rel='stylesheet' href='style.css' type='text/css' />
            <?php include 'header.php'; ?>
        </head>
        <body >
            <div id="container_vanjski">
            <div id="container">
    
                <form method="post">
                    <br/>
                    <?php echo (isset($message) ? $message : ''); ?>
                    <br/>
                    <div id="log"> 
    
                <label for="username">Korisničko ime:</label><input type="text" name="username" /><br />
                <label for="password">Lozinka:</label><input type="password" name="password" /><br />
                <br />
                <input type="submit" name="submit" value="Prijava" id="button" />
    
                    </div>
            </form>
    
            </div>
    
            <?php include 'footer.php'; ?>
            </div>
        </body>
    </html>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效