| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Pavel Titov 01.02.2003 20:20
Возможно, кому-то пригодится...@CLASS
htpasswd
@load[filename][htpass;htpasstext] Загрузить .htpasswd
# Загружаем
$htpass[^file::load[text;$filename]]
$htpasstext[^htpass.text.match[\n][g]{
}]
# Преобразовываем в таблицу
$passwd[^table::create{login password
^htpasstext.match[:][g]{ }}]
@create[] Инициализация без данных
$passwd[^table::create{login password}]
@save[filename][htpass] Сохранить .htpasswd
# Преобразовываем в строку
$htpass[^passwd.menu{${passwd.login}:$passwd.password
}]
# Сохраняем в файл
^htpass.save[$filename]
@setpw[login;password][crypted] Добавление пользователя / изменение пароля
# Шифруемся
$crypted[^math:crypt[$password;^$apr1^$]]
^if(^passwd.locate[login;$login]){
^rem{ Пользователь уже существует }
$passwd.password[$crypted]
}{
^rem{ Пользователя надо добавить }
^passwd.append{$login $crypted}
}
@delete[login] Удалить юзера
^if(^passwd.locate[login;$login]){
$passwd[^remove[$passwd;^passwd.line[];1]]
}
# http://parser.ru/forum/?id=3803
### удаление строк из таблицы
# результат - таблица
# tbl - имя таблицы
# from - начиная с какой строки удалять (!!! нумерация строк с 1)
# count - сколько строк удалять
# пример: $mytable[^remove[$mytable;1;10]] - удалит первые 10 строк
@remove[tbl;from;count]
^if(def $tbl){
$result[^tbl.select((^tbl.line[]<$from) || (^tbl.line[]>=$from+$count))]
}