2015-04-24 3 views
2

Я изучаю PHP, и я нашел статью о входе в систему, которую я хотел применить к моей небольшой базе данных.Проверьте, является ли пользователь администратором при регистрации в

Article

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

таблица пользователей выглядит следующим образом:

Username | Password | Rights 

SomeGuy | somestuff | Standard 

Admin | otherstuff | Admin 

Я пытался учиться у некоторых других вопросов, которые я нашел в Интернете, но эти коды были очень продвинутые и я не понимаю, как применить его к моему собственному код.

То, что я имел в виду:

if(username contains "Admin" in the row){ 
    //Show other stuff then normal user 
} 

Если кто-нибудь знает простой способ сделать это, я ценю это много. Что касается моего кода, я получил в основном все, что связано со статьей, которую я связал. Я только добавил способ отображения данных из другой таблицы.

+0

'select * от пользователей, где username = 'Admin'', выборка строки, а затем проверить, содержит ли поле прав соответствующее слово ... –

+0

вы покажете нам код, который вы сделали до сих пор? –

+0

@MarcB Но как превратить это в выражение 'if else'? – Vasco

ответ

1

Вы можете проверить это, извлекая данные из таблицы на основе имени пользователя, и вы можете проверить права этого пользователя.

Как это:

if($row['Rights'] == 'Admin'){ 
    //Show other stuff then normal user 
} 

Вы можете использовать Select * FROM table where username = 'Admin', а затем создать объект результата запроса, и вы можете проверить права, предоставленные пользователем, если условия.

Обновлено:

В документации есть файл login.php. есть кодовая строка:

$query = mysql_query("select * from login where password='$password' AND username='$username'", $connection); 
$rows = mysql_num_rows($query); 
if ($rows == 1) { 
$_SESSION['login_user']=$username; 
header("location: profile.php"); 
} 

В приведенной выше строке они устанавливают имя пользователя в сеансе. вы также можете установить права пользователя. Для сохранения прав вы можете сделать это:

if ($rows == 1) { 
$row = mysql_fetch_assoc($query); 
$_SESSION['login_user']=$row['username']; 
$_SESSION['rights']=$row['rights']; 
header("location: profile.php"); 
} 

И после того, что вы можете сделать проверку условие, при которых вы хотите:

if($_SESSION['rights'] == 'Admin'){ 
    //Show other stuff then normal user 
} 

Надеется, что это поможет.

+0

Я читал о 'select * from table where username = 'admin'' в нескольких сообщениях stackoverflow, но я не знаю, как это сделать в' if-else statement'. – Vasco

+0

@ Vasco Я обновил свой ответ на основе статьи. проверьте, что плз. –

+0

Не '' имя пользователя'' внутри '$ _SESSION ['login_user'] = $ row ['username'];' текст, который вы помещаете в поле ввода на экране входа? Я не заполняю, что я админ, так как будет '$ _SESSION ['rights'] = $ row ['rights'];' work? – Vasco

1

Предлагаю вам хранить все данные общего доступа в сеансе после входа в систему, как указано ранее.

Когда пользователь отправляет его запрос входа в системе, ваш скрипт должен проверить заданный входные (имя пользователя, пароль в случае, если я принимаю) и после валидации succed, вам придется создать сеанс, так что система будет знать, что этот пользователь в настоящее время вошёл в систему.

Сессия позволяет обмениваться данными для клиента в течение Х-времени (в зависимости от установленной конфигурации) без потери данных. Это действительно похоже на Cookies, но данные являются сторонними серверами istead.

В вашем случае я бы сохранил имя пользователя, его права и т. Д. В сеансе.

Валидация часть

//Assuming you have a set PDO instance 
$stm = $pdo->prepare("SELECT username, rights FROM users WHERE username = :username AND password = :password"); 
$stm->execute(array(":username" => $username, ":password" => $password)); 

И установка часть

if ($stm->rowCount() == 1) { // Check if that user with given data exists 
     $results = $stm->fetch(PDO::FETCH_ASSOC); // Fetch the data 
     $_SESSION['user'] = $results; // Set new session with the fetched data 
} 

А теперь проверка на часть прав

if ($_SESSION['user']['rights'] == 'Admin') { 
    // TODO stuff 
} 

Не забудьте проверить, если пользователь вошел в систему с помощью проверки, если сессия устанавливается:

if (isset($_SESSION['user'])) { 
    // TODO return to logged in page or whatever 
} 

P.S Я предлагаю вам хэш пароля перед сохранением в базе данных! Надеюсь, что это помогло!