我已经创建了一个登录功能,但是当我登录时它不会重定向到正确的页面。有人有解决这个问题的线索吗?
以下是我的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>
答案 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?
怎么办?