Вход
Главное меню





12>


Autologin!
#1
Just popping in
Just popping in


Не подскажите, есть ли хак к ксупс2 для автологина (чтобы и имя, и пароль сохранялись в куках)? Так стандартно сделано например в постнюке.

На офф сайте никай инфы по этому вопросу я не нашел...

Posted on: 2003/3/13 8:29
 Top  Print  Reply Quote


Re: Autologin!
#2


есть такая опция. Изменить профиль »» Учетная запись »» Редактировать учетную запись. только работает криво. по крайней мере у меня запоминает только имя. пароль приходится вводить.

Posted on: 2003/5/14 20:06
http://bratan.no-ip.info
ссылки на игры, фильмы, музыку в eDonkey
 Top  Print  Reply Quote


Autologin
#3


Но ведь там и написано - сохранить ЛОГИН в куках на год.

Так что работает правильно, а пароль он и не должен в куку складывать.

Posted on: 2003/5/14 20:11
AlCol Studio - дизайн для CMS
XOOPS2.RU - доки тут (пока не все )
[ur
 Top  Print  Reply Quote


Re: Autologin
#4
Just popping in
Just popping in


Вопрос кстати не праздный. На одном сервере у меня стоит Нюк и постоянно авторизирован (не надо вводить эти чертовы логины с паролем каждый раз или через пару дней). В Хупсе2 что-то не так, один сервер хранит авторизацию столько, сколько указано в настройках, а другой сервер постоянно срывается, хотя в настройках аналогичная цифра 400000.
Короче, хотим, чтоб всегда был LOGIN!!!

Posted on: 2003/5/15 6:04
 Top  Print  Reply Quote


Autologin
#5


Я б тоже хотел, вот щас занимаюсь хаком, моэ что получится

Posted on: 2003/5/15 13:22
AlCol Studio - дизайн для CMS
XOOPS2.RU - доки тут (пока не все )
[ur
 Top  Print  Reply Quote


Re: Autologin!
#6
Just popping in
Just popping in


Хакать ничего не надо, все работает и так.

Заходим в администрирование -> Конфигурация сайта -> Основные настройки:
Имя для 'cookie' пользователя - здесь ставим имя своего куки, чтобы по имени с другими Xoops-сайтами не пересекалось
Использовать обычную сессию - ДА - ЭТО САМАЯ ГЛАВНАЯ ГРАБЛЯ ИЗ-ЗА КОТОРОЙ НЕ РАБОТАЕТ АВТОЛОГИН
Имя сессии - опять же, придумываем уникальное имя
Истечение срока сессий - 525600

С такими настройками работает на ура
Bye :beer:

P.S. to admin XOOPS Russia
Пофиксь баг со смайликами, замерзает анимация после выбора любого смайлика, а то неудобно, вроде официальный сайт. Решение этой проблемы уже, как полгода назад проплывала.

Posted on: 2003/5/15 15:46
Зри в корень !
 Top  Print  Reply Quote


Autologin
#7


Ну это же всего на год!

Можно, конечно и 525600000 написать, правда, кому нужна сессия на 1000 лет?

Обо этом и так знают, конечно, реально нет разницы, но я просто пытался сделать хак чтоб хупс в куке держал именно логин и пароль, а не сессию, но пока сделать не получается

Posted on: 2003/5/15 16:32
AlCol Studio - дизайн для CMS
XOOPS2.RU - доки тут (пока не все )
[ur
 Top  Print  Reply Quote


Re: Autologin
#8
Just popping in
Just popping in


Дык, как сказать, что нет разницы. ЗАЧЕМ? Посмотреть в куках пароль который забыл ?
В основном в целях безопастности пароли никогда не держат в куке. Этим занимаются браузеры, которые и хранят эти пароли, а не берут их из куки.

Posted on: 2003/5/16 10:09
Зри в корень !
 Top  Print  Reply Quote


Re: Autologin
#9


Точно. И меня больше устраивает сессия на год, чем пароль в куках. И не только из-за безопасности...

Posted on: 2003/5/16 13:19
http://bratan.no-ip.info
ссылки на игры, фильмы, музыку в eDonkey
 Top  Print  Reply Quote


Re: Autologin!
#10


Этот и другие хаки доступны для скачивания тут: Несколько полезных хаков

Вот тут покурочил немного ксупс. И приляпал автологин:
Xoops 2.0RC3(читать примечание ко 2-му шагу), 2.0.2, 2.0.3

1. include\common.php: У меня строка 124, после строчки // ############## Login a user with a valid session ##############:
Quote:

//Begin: Autologin hack
if ((empty($HTTP_SESSION_VARS['xoopsUserId'])) && (!empty($HTTP_COOKIE_VARS['al_pass'])&&(!empty($HTTP_COOKIE_VARS['al_uid'])))) {
$al_uid=$HTTP_COOKIE_VARS['al_uid'];
$pass=trim($HTTP_COOKIE_VARS['al_pass']);
$member_handler =& xoops_gethandler('member');
$user =& $member_handler->getUser($al_uid);
if (is_object($user)) {
$uname= $user->getVar('uname');
} else {
unset($uname);
};
unset($user);
$myts =& MyTextsanitizer::getInstance();
$user =& $member_handler->loginUser(addslashes($myts->stripSlashesGPC($uname)), addslashes($myts->stripSlashesGPC($pass)),true);
if ($user != false){
setcookie('al_pass', $pass, time()+86400*100,'/','',0);
setcookie('al_uid',$user->uid(),time()+86400*100,'/','',0);
$user->setVar('last_login', time());
if (session_id()==''){session_destroy(); session_start();};
$HTTP_SESSION_VARS = array();
$HTTP_SESSION_VARS['xoopsUserId'] = $user->getVar('uid');
$HTTP_SESSION_VARS['xoopsUserGroups'] = $user->getGroups();
if ($xoopsConfig['use_mysession'] && $xoopsConfig['session_name'] != '') {
setcookie($xoopsConfig['session_name'], session_id(), time()+$xoopsConfig['session_expire'], '/', '', 0);
$HTTP_COOKIE_VARS[$xoopsConfig['session_name']]=session_id();
}
$user_theme = $user->getVar('theme');
if (in_array($user_theme, $xoopsConfig['theme_set_allowed'])) {
$HTTP_SESSION_VARS['xoopsUserTheme'] = $user_theme;
}

};
};
//End: Autologin Hack


2. kernel\member.php: У меня строчка 320, пара строк в функции &loginUser (проще привести ее всю):
Quote:

//Begin: Autologin hack
function &loginUser($uname, $pwd, $al_login = false)
{
$criteria = new CriteriaCompo(new Criteria('uname', $uname));
if (!$al_login){$mypwd=md5($pwd);} else {$mypwd=$pwd;};
$criteria->add(new Criteria('pass', $mypwd));
$user =& $this->_uHandler->getObjects($criteria, false);
if (!$user || count($user) != 1) {
return false;
}
return $user[0];
}
//End: Autologin hack


Для версии 2.0RC3:
Quote:

//Begin: Autologin hack
function &loginUser($uname, $pwd, $al_login = false)
{
$criteria = new CriteriaCompo(new Criteria('uname', $uname));
$criteria->add(new Criteria('pass', $pwd));
$user =& $this->_uHandler->getObjects($criteria, false);
if (!$user || count($user) != 1) {
return false;
}
return $user[0];
}
//End: Autologin hack


3. include\checklogin.php строка 46, сразу после условия if (false != $user) {:
Quote:

//Begin: Autologin hack
if (!empty($HTTP_POST_VARS['union_al'])&&($HTTP_POST_VARS['union_al']=='Yes')){
setcookie('al_pass', md5($pass), time()+86400*100,'/','',0);
setcookie('al_uid',$user->uid(),time()+86400*100,'/','',0);
};
//End: Autologin hack


4. /user.php, строка 73, под строчкой session_destroy();:
Quote:

//Begin: Autologin hack
setcookie('al_pass', '', time()-33600,'/','',0);
setcookie('al_uname', '', time()-33600,'/','',0);
setcookie('al_uid', '', time()-3600,'/','',0);
//End: Autologin hack


5. Идем в администрирование порталом, и правим тему оформления->Система->system_block_login.html, добавляем там в любом месте по вкусу подобную запись:
Quote:

<input type="checkbox" name="union_al" value="Yes">Запомнить пароль<br>


вот собственно и все.

Логин-пароль хрянятся в куках 100 дней после последнего посещения. Если хотите больше - все цифры '100' в данном хаке поменяйте на сколько вам нужно.

Недостаток такого подхода - можно заниматься перебором паролей. Т.е. перебором хэшей от распространенных паролей.
При желании можно доработать привязку ip, (путем скливания ip с секретным словом и хранения md5-хэша в качестве дополнительного параметра) - но в таком случае автологином не смогут пользоваться диалапщики.

Насчет пароля в куках - он там хэшированным в любом случае будет, т.е. по сути это только контрольная сумма пароля.

Исправлено 22-07-03, 15:10
После прений на xoops.org al_uname был заменен на al_uid со всеми вытекающими дописками в коде.

Posted on: 2003/6/14 2:47
 Top  Print  Reply Quote








Powered by XOOPS © 2001-2023 The XOOPS Project