Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
RUnner 03.04.2003 04:58
Только отсутствует еще одна маленькая но важная проверка: ipCREATE TABLE sessions ( id bigint(20) unsigned NOT NULL auto_increment, nick bigint(20) unsigned NOT NULL default '0', uid char(32) NOT NULL default '', ip char(16) NOT NULL default '', PRIMARY KEY (id), KEY uid (uid), KEY ip (ip) ) TYPE=MyISAM;проверяю при каждом обращении а админ ли у нас
@check_login[] ^if(!def $cookie:userlogin){ $result[false] }{ ^MAIN:dbquery{$res(^int:sql{select count(id) from sessions where uid='$cookie:userlogin' and ip='$env:REMOTE_ADDR'})} ^if($res==0){ $result[false] }{ ^MAIN:dbquery{$userid(^int:sql{select nick from sessions where uid='$cookie:userlogin'}[$.limit(1)])} ^MAIN:dbquery{$author[^string:sql{select concat_ws(' ',firstname,secname,lastname) from users where id='$userid'}]} $result[true] } } #end of @check_login[]а сам логин вот так происходит:
@make_login[] ^if(!def $form:name || !def $form:passwd){ ^login_page[notcomplite] }{ ^MAIN:dbquery{$res(^int:sql{select id from users where nick='$form:name' and password=MD5('$form:passwd')}[$.default{0}])} ^if($res==0){ ^login_page[incorrect] }{ $uidstr[${form:passwd}${form:name}${env:REMOTE_ADDR}{^math:random(10000)}] ^MAIN:dbquery{^void:sql{insert into sessions(nick,uid,ip) values('$res',MD5('$uidstr'),'$env:REMOTE_ADDR')}} ^MAIN:dbquery{$uid[^string:sql{select MD5('$uidstr')}]} $cookie:userlogin[ $.value[$uid] $.expires[session] ] $response:location[^MAIN:servername[]/admin/index.html] } } #end of @make_login[]при логауте не забывай вычищать sessions и куку %)