簡體   English   中英

session_start()錯誤始終重定向到login.php

[英]session_start() error always redirect to login.php

登錄(login.php)頁面工作正常,但它重定向到index.php頁面

login.php

<?php 
 ob_start();
 session_start();  ?>   

<html>
<head>
<meta charset="utf-8">
    <form method="post" action="login.php" >
        <div class="form-group" >
            <input type="text" class="form-control" name="user_name" >
        </div>
        <div class="form-group">
            <input type="password" class="form-control" name="user_pass" >
        </div>
        <input type="submit" name="login" value="Login" > 
    </form>
</body>
</html>

<?php
    include '../includes/connection.php'; /* connection query */
    if (isset($_POST['login'])) {
        $username = $_POST['user_name'];
        $userpass = $_POST['user_pass'];

        $admin_query = "select * from admin_login where user_name =  '$username' AND user_pass = '$userpass'";

        $run = mysql_query($admin_query);     
        $rows = mysql_num_rows($run);

        if ($rows == 1) {
            $_SESSION['login_user']=$username;
            header("location: index.php");
        } else {
            echo "<script>alert('User name of password is incorrect')</script>";
        }
    }
?>

在索引頁面(index.php)中,會話有錯誤,並且始終重定向到login.php

index.php

<?php
    session_start();
    if(!isset($_SESSION['login_user'])){
    header('Location: login.php');
    }
    else
    {
    ?>
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    </head>
    <body>
    <div class="row cms-admin-panel">
     <div class="col-md-12 "><h5> Welcome: <?php echo $_SESSION['login_user'] ?>  </h5> <a href="logout.php">logout</a>
    <h4 align="center">CMS Admin Panel</h4>
    </div>
    </div>
    </body>
    </html>
    <?php } ?>

注銷頁面工作正常,它重定向到login.php頁面。

logout.php

<?php  
    session_start();
    session_destroy();
    header("location: login.php");
?>

移動session_start(); <form>之前。

session_start()函數必須是文檔中的第一件事。 在任何HTML標記之前。

我到底在哪里放置SESSION_START?

長答案:

由於默認情況下會話是cookie的句柄,

要使用基於cookie的會話,必須在將任何內容輸出到瀏覽器之前調用session_start()。

http://php.net/manual/zh/function.session-start.php

首先,您的session_start()應該位於頁面的頂部。 其次,如果您遇到某種情況,即頁面中有多個session_start(),請始終檢查會話是否已經啟動,

if(session_status() == PHP_SESSION_NONE) {
   session_start();
}

第三個原因,如果標頭已經發送或某種會話緩存限制器錯誤,則可以通過在頁面頂部開始的輸出緩沖區將其修復為

ob_start();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM