| Новости | 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 и куку %)