[英]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>
...
参考这个答案
我没有给出实际的代码。 仅给出逻辑。
使用以下逻辑。
session_start();
if(session logged in){
header("Location:view_report.php");
}
else{
show your html form;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.