2014-09-20 5 views
0

У меня проблемы с проверкой, является ли пользователь администратором или нет в базе данных. Я сделал это так, если у администратора есть значение 1 для профиля пользователей, тогда они являются администраторами и перенаправляются на страницу администратора, и если они не перенаправлены на страницу входа в систему. Однако я дал своей личной учетной записи значение 1 в базе данных, однако он все еще перенаправляет меня на страницу входа.Проверка, является ли пользователь администратором или нормальным

Я дал свой код ниже для того, чтобы узнать, не сделал ли я что-то не так, скажите мне, что я только начал изучать PHP.

<?php 
session_start(); 
// First we cubrid_execute(conn_identifier, SQL)te our common code to connection to the database and start the session 
require("include/common.php"); 

$admin = $_POST['admin']; 
$user = $_POST['username']; 

// At the top of the page we check to see whether the user is logged in or not 
if(empty($_SESSION['user'])) 
{ 
    // If they are not, we redirect them to the login page. 
    header("Location: login.php"); 

    // Remember that this die statement is absolutely critical. Without it, 
    // people can view your members-only content without logging in. 
    die("Redirecting to login.php"); 
} 

// Everything below this point in the file is secured by the login system 

// We can retrieve a list of members from the database using a SELECT query. 
// In this case we do not have a WHERE clause because we want to select all 
// of the rows from the database table. 
$query = " 
    SELECT * 
    FROM users 
"; 

try 
{ 
    // These two statements run the query against your database table. 
    $stmt = $db->prepare($query); 
    $stmt->execute(); 
} 
catch(PDOException $ex) 
{ 
    // Note: On a production website, you should not output $ex->getMessage(). 
    // It may provide an attacker with helpful information about your code. 
    die("Failed to run query: " . $ex->getMessage()); 
} 

// Finally, we can retrieve all of the found rows into an array using fetchAll 
$rows = $stmt->fetchAll(); 

if ($admin == 1) { 
    $_SESSION['username'] = $user; 
    header("location: memberlist.php"); 
} 

if ($admin == 0) { 
    $_SESSION['username'] = $user; 
    header("location: login.php"); 
} 
+0

Вы должны ограничить запрос, используя ИНЕКЕ на имя текущего пользователя. В противном случае вы не будете знать, какое пользовательское свойство администратора вы проверяете. – andy

+0

Итак, '$ _SESSION ['user']' not empty -> 'if (empty ($ _ SESSION ['user'])) {header (" Location: login.php ");}'? Должны ли мы предположить '$ _POST ['admin'] == 1'? Вы устанавливаете '$ _SESSION ['username']', is '$ _SESSION ['user']' предполагается быть '$ _SESSION ['username']'? – Sean

+0

Вы должны сначала проверить, содержит ли ваш массив $ _POST эти ключи, но никогда не полагайтесь на них. Проверьте с помощью запроса, является ли это администратором и сохраняет результат в сеансе. – VMai

ответ

0

Правильно вы код первых:

Попробуйте это:

if ($admin == 1) { 
    $_SESSION['admin'] = $admin; //put you admin in session 
    header("location: memberlist.php"); 
} 

if ($admin == 0) { 
    $_SESSION['user'] = $user;  //here put your user in session 
    header("location: login.php"); 
} 



if(empty($_SESSION['user'])) //if user is empty then it redirects to login page 
{ 

    header("Location: login.php"); 


    die("Redirecting to login.php"); 
} 
else if(!empty($_SESSION['admin'])) //if admin is not empty it goes to admin area 
{ 

    header("location: memberlist.php"); 
} 

else if(!empty($_SESSION['user'])) //same here if user is present,then it leads to user area 
{ 


    header("Location: user.php"); 
} 
+0

Нет, я не работал :(Каждый раз, когда я вхожу в систему, а затем перехожу на страницу списка участников, я автоматически выхожу и перемещаюсь на страницу login.php. – Unique

+0

, если вы используете 1 для администратора, у вас используется 0 для пользователя ????? Пожалуйста, объясните, пожалуйста, –

+0

Уникальный, ваш код сложный. Попробуйте этот скрипт. Это будет работать .. легко и просто ... if ($ row == 1) { header ("location: memberlist.php");} еще если ($ строка == 0) { заголовок ("место: user.php");} здесь session.php если (пусто ($ _ SESSION [ 'ID! '])) // Если id пуст, он перенаправляет на страницу входа header ("Location: login.php"); } –

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