登录后不重定向

时间:2014-03-20 12:43:25

标签: php login

我已经创建了一个登录功能,但是当我登录时它不会重定向到正确的页面。有人有解决这个问题的线索吗?

以下是我的loginform代码的一部分。

session_start();
if(isset ($_SESSION['loggedin']))
{
     header( "Location: account.phtml" ) ;
}

if (isset($_POST["submit"]))
{
     $username = $_POST ["username"];
     $password = $_POST ["password"];

     if ($username && $password)
     {
         $query = mysql_query("SELECT * FROM user WHERE username='$username'");

         if($query)
         {
             $numrows = mysql_num_rows($query);
             if($numrows != 0)
             {
                 while ($row = mysql_fetch_assoc($query))
                 {
                     $dbusername = $row ['username'];
                     $dbpassword = $row ['password'];
                 }
                 if ($username == $dbusername && $password == $dbpassword)
                 {
                     $_SESSION['username'] = $dbusername;
                     $_SESSION['loggedin'] = true;
                     header("Location: account.phtml");
                 }
             }
         }
         else{}
     }
}

以下是我的登录表单中的一部分。

    <form class="form-horizontal" role="form" method="post" target="account.phtml">
         <!-- here comes my loginform -->
    </form>

3 个答案:

答案 0 :(得分:1)

改变这个..

header("Location: account.phtml"); 

header("Location: {you want to navigate page}")

您想要导航的网址。 我认为你重定向工作页面。你的表格目标和导航网址是相同的。

答案 1 :(得分:0)

<?php
if (isset($_SESSION['user_id']) && $_SESSION['user_id']) {
    header('Location: user.php?id=' . $_SESSION['user_id']); 
   exit;
}

答案 2 :(得分:0)

最可能的原因是,您在发出重定向时已经发送了标头。如果是这种情况,那么PHP将发出警告信息 - 为什么你不能看到它?因此,第一步是在session_start()之前显式触发警告,并确保您的错误报告正常工作。

如果这是唯一的问题,那么你的问题将被关闭,作为许多其他问题的重复,这些问题最终会导致相同的根本原因。

下一个问题是你没有停止在head('Location:...)函数之后执行的代码(提示:如果你在header()和exit之间放置一个print语句你可能能够获取有关代码正在做什么的一些诊断信息。

下一个问题是你的代码对SQL注入是开放的。考虑如果

将会发生什么
$_POST ["username"]="nouser' UNION SELECT 'admin' AS username, '' AS password "
                   ."WHERE 'a'='a";

下一期是:

if(isset ($_SESSION['loggedin']))

如果$ _SESSION ['loggedin'] == false?

怎么办?