У меня проблемы с проверкой, является ли пользователь администратором или нет в базе данных. Я сделал это так, если у администратора есть значение 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");
}
Вы должны ограничить запрос, используя ИНЕКЕ на имя текущего пользователя. В противном случае вы не будете знать, какое пользовательское свойство администратора вы проверяете. – andy
Итак, '$ _SESSION ['user']' not empty -> 'if (empty ($ _ SESSION ['user'])) {header (" Location: login.php ");}'? Должны ли мы предположить '$ _POST ['admin'] == 1'? Вы устанавливаете '$ _SESSION ['username']', is '$ _SESSION ['user']' предполагается быть '$ _SESSION ['username']'? – Sean
Вы должны сначала проверить, содержит ли ваш массив $ _POST эти ключи, но никогда не полагайтесь на них. Проверьте с помощью запроса, является ли это администратором и сохраняет результат в сеансе. – VMai