我正在设计一个网站,其中有四个模块的管理,分支机构管理,记者,会计,其中每个人都可以登录到各自的页面,如管理员将登录到管理页面和记者将登录到它的页面,但代码不起作用。当我尝试登录到任何模块时,它只登录到管理页面,并转到分支管理员或报告者或会计。
这是我的index.php页面
<?php
include('login.php'); // Includes Login Script
if(isset($_SESSION['login_user']))
{
header("Location: admin.php");
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>LoginIN</title>
<link href="styles/bootstrap.min.css" rel="stylesheet">
<link href="styles/signin.css" rel="stylesheet">
</head>
<body>
<div id="wrapper">
<header id="top">
<center><h1>Reporter Management System</h1></center>
<div class="container">
<form class="form-signin" role="form" action ="" method="post">
<h2 class="form-signin-heading">Please sign in</h2>
<input type="email" name="username" class="form-control" placeholder="Email address" required autofocus>
<input type="password" name="password" class="form-control" placeholder="Password" required>
<br>
<div class="checkbox">
<label>
<input type="checkbox" value="remember-me">Remember me
<br>
</label>
</div>
<input name="submit"button class="btn btn-lg btn-primary btn-block" type="submit" value=" Sign in">
<span><?php echo $error; ?></span>
<br>
<a href="">Forgot your password?</a>
</body>
</html>这是我的login.php页面
<?php
error_reporting( E_ALL );
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
session_start(); // Starting Session
$error=''; // Variable To Store Error Message
if (isset($_POST['submit'])) {
if (empty($_POST['username']) || empty($_POST['password'])) {
$error = "Username or Password is invalid";
}
else
{
// Define $username and $password
$usr=$_POST['username'];
$pwd=$_POST['password'];
// Establishing Connection with Server by passing server_name, user_id and password as a parameter
$con = mysql_connect("localhost", "root1", "oec@123") or die('Error Connecting to mysql server');
// To protect MySQL injection for Security purpose
$username = stripslashes($usr);
$password = stripslashes($pwd);
$username = mysql_real_escape_string($usr);
$password = mysql_real_escape_string($pwd);
// Selecting Database
$db=mysql_select_db('rms',$con);
// SQL query to fetch information of registerd users and finds user match.
$query = mysql_query("select username, password from login where password='$pwd' AND username='$usr'", $con) or die('Error querying database');
$rows = mysql_num_rows($query);
while ($rows = mysql_fetch_array($query)) {
$_SESSION['Sl_no']=$rows['Sl_no'];
if ($rows ==1)
{
// Initializing Session
header("location: admin.php"); // Redirecting To Other Page
}
elseif ($rows==2)
{
header("location: branchadmin.php");
}
elseif($rows==3)
{
header("location: accountant.php");
}
elseif($rows==4)
{
header("location: reporter.php");
}
else
{
$error = "Username or Password is invalid";
}
}
mysql_close($con); // Closing Connection
}
}
?>发布于 2015-03-25 04:09:25
我认为问题出在这方面的检索和条件语句上。
while ($rows = mysql_fetch_array($query)) {
$_SESSION['Sl_no']=$rows['Sl_no'];
if ($rows ==1)
{由于登录页面每次都重定向到admin.php,这可能是因为您将返回的行数放在$rows变量(如$rows = mysql_num_rows($query); )中,如果它返回一行,则将满足稍后检查的if ($rows ==1){header("location: admin.php");}条件……
这只是一个受过教育(和/或没有受过教育)的猜测。
为什么不在数据库中放置一列来指示用户的访问级别。例如user_level或admin = 1、branchadmin = 2、accountant = 3等,然后根据这些进行检查和重定向。
因此,当您检查表单中的用户名和密码是否在数据库中时,如果在数据库中,则可以查看它们的用户级别,以了解将它们重定向到何处。
if ($rows === 1){
$row_array = mysql_fetch_assoc($query);
if ($row_array['admin_level'] == 1){
header("location: admin.php"); // Redirecting To Other Page
}
elseif ($row_array['admin_level']==2){
header("location: branchadmin.php");
}
elseif($row_array['admin_level']==3){
header("location: accountant.php");
}
elseif($row_array['admin_level']==4){
header("location: reporter.php");
}
else{
$error = "Username or Password is invalid";
}
}
mysql_close($con); // Closing Connection这有道理吗?还是我误解了你想要实现的目标?
发布于 2020-01-02 00:30:41
在这种情况下,您必须使用多个会话变量,如$_SESSION['email']和$_SESSION['type'].
在这里,$email将是特定用户的用户名,而$type将是管理员、分支管理员、报告者、会计等用户类型。
这两个会话变量需要在用户登录时设置。例如,考虑以下代码片段:
if(isset($_SESSION['email']))
{
if($_SESSION['type'] == "admin")
{
header('location:admin.php');
}
else if($_SESSION['type'] == "reporter")
{
header('location:reporter.php');
}
}https://stackoverflow.com/questions/29241022
复制相似问题