2015-03-15 2 views
0

Im, создавая сайт, на котором пользователи могут входить в систему, чтобы покупать книги и собирать их из магазина. У меня есть экран входа в систему, где для входа требуются как обычные пользователи, так и сотрудники. Тем не менее, я пытаюсь найти способ разграничения между обычными пользователями и персоналом.Проведите различие между администратором и пользователем php

У меня есть таблица под названием «пользователи», где один из столбцов называется «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> 

Line 24-30, где ив поставил чек, но это не похоже на работу. Я не получаю никаких ошибок, он просто переходит к части проверки, когда я пытаюсь войти в админ, и говорит, что «имя пользователя или пароль недействительны». Однако он входит в систему как обычный пользователь.

Любые идеи?

+0

убедитесь, что config.php включает error_reporting (E_ALL) и предпочтительнее exception_error_handler – hanshenrik

+0

Привет, я dont получить любые ошибки даже с error_reporting (E_ALL), в файле конфигурации. – Spud91

+0

Почему вы хотите реализовать решение для управления пользователями 56390472th? Почему бы не использовать существующий прошло? – arkascha

ответ

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

Присмотритесь к этому. Вы устанавливаете $rows с помощью mysqli_num_rows, он не будет массивом и должен быть только целым числом. Для получения данных столбца вам нужно использовать функцию fetch. Выборки будет работать, используя переменную MySQLi заявления (в вашем случае возвращаемого значения mysqli_query или $query Подробнее о принести здесь:.. http://php.net/manual/en/mysqli-stmt.fetch.php

PS Вашего код немного грязными Вы используете stripslashes тогда реальный побег, почему бы не использовать подготовленные заявления? Они более безопасны и более эффективны, потому что они позволяют СУБД (MySQL) обрабатывать переменные. Узнайте больше о подготовленных операциях здесь: http://php.net/manual/en/mysqli.prepare.php

+0

Ах им довольно новичок в php. Как бы я это сделал? – Spud91

+0

Взгляните на дополнительную информацию и ссылки, которые я помещаю в редактирование. – Devon

Смежные вопросы