区分管理员和用户php

时间:2015-03-15 15:26:03

标签: php mysql

我创建了一个网站,用户可以登录该网站购买书籍并从商店收集。我有一个登录屏幕,普通用户和工作人员都可以登录。但是我试图找到区分普通用户和员工的方法。

我有一个名为“users”的表,其中一个列名为“account_type”,可以为普通用户保留U值,为管理员保存A.

这是我目前的代码:

<?php
session_start(); // Starting Session
include_once('config.php');

$error=''; // Variable To Store Error Message
if (isset($_POST['submit'])) {
if (empty($_POST['user']) || empty($_POST['pass'])) {
$error = "Please complete both fields";
}
else
{
// Define $username and $password
$user=$_POST['user'];
$_SESSION['login_user']=$user;
$pass=md5($_POST['pass']);
// To protect MySQL injection for Security purpose
$user = stripslashes($user);
$pass = stripslashes($pass);
$user = mysqli_real_escape_string($mysqli, $user);
$pass = mysqli_real_escape_string($mysqli, $pass);
// SQL query to fetch information of registered users and finds user match.
$query = mysqli_query($mysqli, "SELECT * FROM users where Username='$user' AND Password='$pass'");
$rows = mysqli_num_rows($query);
if ($rows == 1) {
header("location: home.php"); // Redirecting To Other Page
}elseif ($rows["account_type"] == "A"){
header ("location: adminHome.php");
}else {
$error = "Username or Password is invalid";
}
mysqli_close($mysqli); // Closing mysqlinection
}
}
?>

<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style/style.css"> 
<script type="text/javascript" src="//code.jquery.com/jquery-2.1.3.min.js"></script>
<title>Login</title>

</head>
<body>

<div id = "logReg">
<span href="#" class="button" id="toggle-login">Log in</span> 
</div>

<div id="login">
  <div id="triangle"></div>
  <h1>Log in</h1>
  <form action = "" id = "logregform" method = "POST">
    <p id = "err"> <?php if(isset($error)) {echo $error;} ?> </p>
    <input id = "logtxt" type="text" placeholder="Username" name = "user" required/>
    <input type="password" placeholder="Password" name = "pass" required/>
    <input type="submit" value="Log in" name = "submit" />
    <br>
    <br>
    <p id ="bklg">Dont have an account? <a href="register.php">Sign up</a></p> 
  </form>
</div>
<script>

$('#toggle-login').click(function(){
  $('#login').slideToggle('fast'); 
});
</script>
</html>

第24-30行是我把支票放在哪里,但它似乎没有用。 当我尝试管理员登录详细信息并说“用户名或密码无效”时,我没有得到任何错误它只是跳到验证部分然而它确实以普通用户身份登录。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

$rows = mysqli_num_rows($query);
if ($rows == 1) {
header("location: home.php"); // Redirecting To Other Page
}elseif ($rows["account_type"] == "A"){
...
}

仔细看看这个。您正在使用mysqli_num_rows设置$rows,它不是一个数组,只应该是一个整数。您需要使用fetch函数来获取列数据。 fetch将使用MySQLi语句变量运行(在您的情况下是mysqli_query的返回值或$query。有关fetch的更多信息,请访问:http://php.net/manual/en/mysqli-stmt.fetch.php

P.S。你的代码有点乱。你使用stripslashes然后真正逃脱,为什么不使用预备语句?它们更安全,更高效,因为它们让DBMS(MySQL)处理变量。在此处阅读有关预准备陈述的更多信息:http://php.net/manual/en/mysqli.prepare.php