簡體   English   中英

使用會話登錄后重定向到“報告”頁面

[英]Redirect to Reports page after login using Session

我設計了如下所示的登錄頁面,該頁面具有從數據庫進行檢查的功能。 我希望網站在成功登錄后將用戶重定向到顯示其報告頁面(view_report.php)的指定頁面。 由於某些原因,輸入詳細信息后,頁面將返回到同一頁面,而不是不登錄並且也不會引發任何錯誤。 我不確定我哪里出錯了。 我在這里先向您的幫助表示感謝。 :-)

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
  ----header area----
</head>
<body>
 <div class="logo"></div>
  <div class="login"> <!-- Login -->
    <h1>Login</h1>

    <form class="form" method="POST" action="index.php">

      <p class="field">
        <input type="text" name="login" placeholder="Restaurant id" required/>
        <i class="fa fa-user"></i>
      </p>

      <p class="field">
        <input type="password" name="password" placeholder="Password" required/>
        <i class="fa fa-lock"></i>
      </p>

      <p class="submit"><input type="submit" name="commit" value="Login"></p>

      <p class="remember">
        <input type="checkbox" id="remember" name="remember" />
        <label for="remember"><span></span>Remember Me</label>
      </p>

      <p class="forgot">
        <a href="#">Forgot Password?</a>
      </p>

    </form>
  </div> <!--/ Login-->

<?php
if( $_SESSION["logging"]&& $_SESSION["logged"])
{
     header("Location:view_report.php");    
}
else {
    if(!$_SESSION["logging"])
    {  
    $_SESSION["logging"]=true;
    }
       else if($_SESSION["logging"])
       {
         $number_of_rows=checkpass();
         if($number_of_rows>=1)
            {   
             $_SESSION[user]=$_GET[userlogin];
             $_SESSION['logged']=true;
             header("Location:view_report.php");    
            }
        }
     }

function checkpass()
{
$servername="localhost";
$username="root";
$conn=  mysql_connect($servername,$username)or die(mysql_error());
mysql_select_db("konjam_disc",$conn);
$sql="select * from users where name='$_GET[userlogin]' and password='$_GET[password]'";
$result=mysql_query($sql,$conn) or die(mysql_error());
return  mysql_num_rows($result);
}

?>
</body>
</html>

發送任何HTML輸出后,您將無法重定向或“修改標頭”,因此您的重定向代碼必須在發送任何HTML內容之前。 所以你的代碼可能是這樣的

<?php
session_start();

if( $_SESSION["logging"]&& $_SESSION["logged"])
{
    header("Location:view_report.php");    
} else {
    if(!$_SESSION["logging"])
    {  
    $_SESSION["logging"]=true;
    }
    else if($_SESSION["logging"])
    {
        $number_of_rows=checkpass();
        if($number_of_rows>=1)
        {   
            $_SESSION[user]=$_GET[userlogin];
            $_SESSION['logged']=true;
            header("Location:view_report.php");    
        }
    }
 }

?>

<html>
...

參考這個答案

如何修復PHP中的“標頭已發送”錯誤

我沒有給出實際的代碼。 僅給出邏輯。

使用以下邏輯。

session_start();
    if(session logged in){
    header("Location:view_report.php");

    }
    else{
    show your html form;
    }

暫無
暫無

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

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