ограничение доступа и прав

darrios

Новичок
Как можно ограничивать появление дополнительных панелей, иконок редактирования, ... для модератора и администратора?
Я в программировании новичок по этому хочу знать как это нужно делать, что бы было безопасно, удобно, просто?

Я сделал так:
при авторизации создаются сессии $_SESSION['user'], $_SESSION['pass'],

Каждый не доступный панель для юзеров я с помощью функции узнаю статус пользователя:
PHP:
if(uznat_status($_SESSION['user']) > 1){
показываем панель.... и тп.
}
а функция такова:
PHP:
function uznat_status($user){
mysql_query(SELECT status FROM ... WHERE user_nick='$user');
return номер статуса;
}
статусы я решил сделать такие:
1 - пользователь
2 - модераторы
3 - админ
0 - забаненные

Это работает, но правильно ли я делаю?
Это как у людей или нет, и безопасно ли? =)
Кто знает как это устроено у настоящих, опытных программистов?
Буду благодарен за любой совет...
 

С.

Продвинутый новичок
Принцип правильный. Только не лезть же базу каждый раз перед любой панелькой или кнопкой.
Да и зачем вам $_SESSION['pass']? Что вы с ним делать будете? Может полезнее $_SESSION['status']?
 

pilot911

Новичок
сессии
Принцип правильный. Только не лезть же базу каждый раз перед любой панелькой или кнопкой.
Да и зачем вам $_SESSION['pass']? Что вы с ним делать будете? Может полезнее $_SESSION['status']?
почему нет? вполне естественный путь
 

Духовность™

Продвинутый новичок
Как можно ограничивать появление дополнительных панелей, иконок редактирования, ... для модератора и администратора?
PHP:
<html>
	<?php if ($user->isAdmin()): ?>
		<a href="/...">Зобанить</a>
	<?php endif; ?>
</html>
Я сделал так:
при авторизации создаются сессии $_SESSION['user'], $_SESSION['pass'],
Я не люблю использовать сессии для сохранения статуса пользователя и его состояния.
У меня при успешной авторизации ставятся 2 куки - хэш пароля/логина/соли и ID пользователя.
При каждом заходе на страницу я вытягиваю данные из базы на основании этих кук:

PHP:
    /**
     * Возвращает доменный объект Krugozor_Module_User_Model_User находя его по $id,
     * хешу md5 и соли $salt.
     * Используется при авторизации через куки (автологин).
     *
     * @param int $id
     * @param string $md5password
     * @param string $salt
     * @return Krugozor_Module_User_Model_User
     */
    public function findByLoginHash($id, $md5password, $salt)
    {
         $res = $this->db->query('SELECT * FROM
                                      `'.$this->db_table_name.'`
                                  WHERE
                                      id = ?i
                                  AND
                                      MD5(CONCAT(`user_login`, `user_password`, "?s")) = "?s"
                                 ', $id,
                                    $salt,
                                    $md5password);

        if (is_object($res) && $res->getNumRows() > 0)
        {
            return parent::createModelFromArray($res->fetch_assoc());
        }

        return false;
    }
Если у меня есть пользователи в системе, то я могу поменять права пользователя не заботясь о том, что в сессии пользователя будут лежать данные с устаревшими правами.
 
Сверху