Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Тайлер 19.07.2002 06:29
На перле написал 'очиститель' файла с таблицами + сессия продлевается после каждого действия. Вроде работает...$time[^date::now[]] $week_second[^eval( ($time.weekday * 86400) + ($time.hour * 3600) + ($time.minute * 60) + $time.second )] $keys[^table::load[session_keys.dat]] $users[^table::load[users.dat]] ^if(def $cookie:user_id){ ^keys.menu{ ^if($keys.key eq $cookie:user_id){ ^if($keys.ip eq $env:REMOTE_ADDR){ ^if(^eval($week_second - $keys.time) < 900){ $auth[ok] $access_level[$keys.access] $cgi_update[^file::cgi[/cgi-bin/auth.cgi;$.update[$keys.key]$.time[$week_second]]] } } } } } ^users.menu{ ^if($users.login eq $form:login && $users.password eq $form:password){ $auth[] } } ^if($auth ne ok){ ^users.menu{ ^if($users.login eq $form:login && $users.password eq $form:password){ $auth[ok] $i[32] $abc[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz] ^while($i >= 0){ $key[$key^abc.mid(^math:random(61);1)] $i[^eval($i-1)] } $cookie:user_id[ $.value[$key] $.expires[session] ] ^keys.append{$env:REMOTE_ADDR $key $week_second $users.access $users.login} ^keys.save[session_keys.dat] $access_level[$users.access] $cur_user[$users.login] ^if(^keys.count[] > 10){ $cgi_auth[^file::cgi[/cgi-bin/auth.cgi;$.clean[$week_second]]] } } } }