|
|
|
| Подскажите как можно устроить авторизацию пользователей в несколько уровней.
Хочу попробовать форум написать :)
Нужно чтот типа:
Админ
Модератор
Юзер
Гость
Использовать буду MySQL | |
|
|
|
|
|
|
|
для: Sywooch
(20.04.2006 в 17:26)
| | Заводишь таблицу для юзеров и в этой таблице, кроме обычных полей (ник, логин, пароль и т.д.), размещаешь дополнительное поле, которое называешь, что-нибудь типа priv. В это поле и записываешь, кем является юзер: админом, модератором, юзером или гостем. Затем после авторизации пользователя на сайте смотришь это поле и разрешаешь этому пользователю делать то, что ему разрешено.
Например, если пользователь авторизовался и в поле priv у него записано "Админ", то ему можно делать все что угодно :-), если "Гость", то ничего :) | |
|
|
|
|
|
|
|
для: WebTech
(20.04.2006 в 17:55)
| | Это я и сам понимаю!
Я не вкурсе как авторизовывать посетителей и как разграничить им привилегии? | |
|
|
|
|
|
|
|
для: Sywooch
(20.04.2006 в 18:04)
| | Авторизация. Посетитель вводит логин и пароль и если они совпадают с имеющимися в базе данных, то этому посетителю разрешено что-то делать (в соответствии с его привилегиями).
Чтобы пользователь оставался авторизованным при переходе со страницы на страницу можно использовать сессии или куки или еще что... :-)
Разграничение привилегий происходит при попытке выполнить какое-либо действие. Например, если после авторизации выяснилось, что посетитель - Админ, то возле каждого поста имеется ссылка Удалить, ну, или что-то типа этого. У Гостя нет такой ссылки. Или например при нажатии кнопки удалить, проверяется привилегия пользователя. Если это Админ, то удаление происходит, если Гость, то выводится сообщение с запретом... Ну и т.д. | |
|
|
|
|
|
|
|
для: WebTech
(20.04.2006 в 18:59)
| | И снова теория :( | |
|
|
|
|
|
|
|
для: Sywooch
(20.04.2006 в 23:08)
| | Ленишься сам думать и писать ;-)
Можно примерно так.
Допустим таблица с юзерами имеет примерно следующую структуру:
CREATE TABLE users
(
user_id int(10) not null unsigned auto_increment primary key,
login varchar(20) not null,
password varchar(20) not null,
nick varchar(20) not null,
priv enum('admin', 'moderator', 'user', 'guest') not null default 'guest'
)
|
Скрипт для авторизации будет примерно такой
<?php
// авторизация
include 'db_connect.php'; // скрипт подключения к базе данных
session_start(); // начинаем сразу сессию
// получаем значения логина и пароля из формы
$login = mysql_escape_string($_POST['login']);
$password = mysql_escape_string($_POST['password']);
// проверяем наличие переданных логина и пароля в базе данных
$res = mysql_query('select login, password, nick
from users
where login="'.$login.'" and password="'.$password.'"');
$num = mysql_num_rows($res);
if ($num == 0)
{
echo 'Неверный логин и/или пароль!';
exit;
}
$nick = mysql_result($res, 0, 'nick'); // выбираем ник из базы данных
// записываем переменные сессии
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
echo 'Привет '.$nick.'!';
?>
|
Далее на каждой странице в начале (после подключения к базе естественно) размещаешь фрагмент кода
<?php
session_start();
$login = mysql_escape_string($_SESSION['login']);
$password = mysql_escape_string($_SESSION['password']);
// проверяем логин и пароль из переменных сессии на наличие в базе данных
$res = mysql_query('select login, password
from users
where login="'.$login.'" and password="'.$password.'"');
$num = mysql_num_rows($res);
if ($num == 0)
{
echo 'Ошибка авторизации!';
exit;
}
$priv = mysql_result($res, 0, 'priv'); // получаем привилегии
if ($priv == 'admin')
{
// скрипт с действиями разрешенными для админа
}
if ($priv == 'moderator')
{
// скрипт с действиями разрешенными для модератора
}
// и т.д.
?>
|
| |
|
|
|
|
|
|
|
для: WebTech
(21.04.2006 в 17:26)
| | для начала надо определить какие статусы пользователей, и с какими правами
будут (или хочешь) существовать в твоём форуме, потом пляшешь от создания таблиц в БД
заканчивая выводом информации.
Довольно таки обширная тема, не ограничивающаяся одним-пятью постами... | |
|
|
|
|
|
|
|
для: gentooshnik
(21.04.2006 в 18:06)
| | WebTech ты прав. Лентяюга страшный :)
Но иногда пока дождусь ответа, отвечаю сам!
В данном случае непонимаю с чего начать :)
Правда уже понял!.... | |
|
|
|
|
|
|
|
для: WebTech
(21.04.2006 в 17:26)
| | У меня с базой не выходит, в 5 мускуле примари по другому выставляется
CREATE TABLE 'users' (
'user_id' INT( 10 ) NOT NULL AUTO_INCREMENT ,
'login' VARCHAR( 20 ) NOT NULL ,
'password' VARCHAR( 20 ) NOT NULL ,
'nick' VARCHAR( 20 ) NOT NULL ,
'priv' ENUM(
'admin',
'moderator',
'user',
'guest'
) DEFAULT 'guest' NOT NULL ,
PRIMARY KEY ( 'user_id' )
)
|
| |
|
|
|