Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
redactor 22.09.2003 21:42
<DIV> уже закрыл.@user[content] ^if(!def $form:login && !def $form:password){ ^if(!def $cookie:login && !def $cookie:session){ #если не логинится и нет куков с логином и сессией, то показать форму входа ^login_form[] }{ #иначе лезем в базу, где выбираем пользователя по логину и его состоянию(1-вкл, 0 - выкл.) ^connect[$connect_string]{ $user_user[^table::sql{select id, name, password, last_time, now, perms, sess from users where login='$cookie:login' and stat="1" }] #Если кука с сессией нашлась, но не равна сессии в базе, то ^if("$cookie:session" ne "$user_user.sess"){ #Показываем форму ^login_form[] }{ #Иначе показываем то, что скрыто под авторизацией $content } } } }{ #Лезем в базу и ищем пароль, соответствующий логину (смотрим только среди включенных юзеров) ^connect[$connect_string]{ $user_auth[^table::sql{select id, name, password, login, last_time, now, perms, sess from users where login='$form:login' and stat='1' }] #Если запрос чего-то вернул - смотрим чего он там нам принес ^if(def $user_auth){ #Проверяем соответствует ли пароль из базы паролю, введенному в поле #Нижеследующее после отладки стоит проверять ч\з ^math:md5[строка] ^if($form:password eq $user_auth.password){ #Записываем идентификатор и дату в таблицу к юзеру и записываем дату из нау меняем в ласт $now[^date::now[]] #создаем уникальный айди для сессии $session[^math:uuid[]] ^void:sql{UPDATE users SET sess= '$session', last_time='$user_auth.now', now='^now.sql-string[]' WHERE login='$user_auth.login'} # Пишем айди в куку $cookie:session[ $.value[$session] $.expires[session] ] #Кладем куки с логином юзера $cookie:login[ $.value[$user_auth.login] ] $content }{ ^login_form[<font color="#FF0000">Ошибка! Пробуйте еще раз.</font>] } }{ ^login_form[<font color="#FF0000">Ошибка! Пробуйте еще раз.</font>] } } }Это - @perms[]
@perms[user;operator;administrator] ^if(def $cookie:login && def $cookie:session){ # лезем в базу, где выбираем пользователя по логину и его состоянию(1-вкл, 0 - выкл.) ^connect[$connect_string]{ $user[^table::sql{select id, name, password, last_time, now, perms, sess from users where login='$cookie:login' and stat="1" }] #Если кука с сессией нашлась, но не равна сессии в базе, то ^if("$cookie:session" ne "$user.sess"){ #Тишина }{ #Иначе показываем то, что скрыто под авторизацией $reg_switch[^switch[$user.perms]{ #Читаем права пользователя их всего 3 - пользователь(минимум), оператор(немного больше), администратор(полный контроль) ^case[1]{$administrator} #Права админа ^case[2]{$operator} #Права оператора ^case[DEFAULT]{$user} #Ну и, наконец, права простого пользователя }] $reg_switch } } }