VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Доброго времени суток всем.
Появилась следующая проблема:
Есть сайт на базе drupal, есть форум vBulletin 4.0, есть мост между ними в виде модуля drupalVB (т.е. при входе на форуме он перекидывает на друпал, тот делает авторизацию, генерит куки и возвращает обратно на форум).
И вот тут возникает проблема - на форме входа форума есть галочка "Запомнить?" она работает нормально только в том случае, если авторизоваться ТОЛЬКО формой форума, а в моем случае мост никак не отрабатывает данный параметр. Смотрел исходники воблы по авторизации, никак не могу понять где там именно отрабатывается эта галочка. Подскажите где хранится данный параметр и какое у него должно быть значение, чтобы я смог отрабатывать данный параметр в мосте.
т.е. время жизни $expire равняется 1 году, вроде все просто. Пробую сделать такую же систему в модуле друпала, авторизация не срабатывет, генерятся три кука (lastactivity, lastvisit, sessionhash) вместо пяти, время жизни их 1 год.
Чего не хватает, может нужно еще какой-то параметр заюзать?
@a_n_d_y
Знаток
Join Date: Nov 2005
Posts: 468
Версия vB: 4.1.8
Reputation:
Knowing 131
Репутация в разделе: 120
0
Покажи кусок кода где куки записываются...
@oriGN
Простоузер
Join Date: Dec 2009
Posts: 4
Reputation:
Lamer -2
Репутация в разделе: -2
0
вот функция модулья drupalvb которая формирует куки
Code:
function drupalvb_set_login_cookies($userid) {
// Load required vB user data.
$vbuser = db_fetch_array(drupalvb_db_query("SELECT userid, password, salt FROM {user} WHERE userid = %d", $userid));
if (!$vbuser) {
return FALSE;
}
$vb_config = drupalvb_get('config');
$vb_options = drupalvb_get('options');
$cookie_prefix = (isset($vb_config['Misc']['cookieprefix']) ? $vb_config['Misc']['cookieprefix'] : 'bb');
$cookie_path = $vb_options['cookiepath'];
$now = time();
// вот наша волшебная переменная
// $expire = $now + (@ini_get('session.cookie_lifetime') ? ini_get('session.cookie_lifetime') : 60 * 60 * 24 * 365);
// сделал для пробы вот так
// $expire = 60 * 60 * 24 * 365;
// а надо вот так
$expire = $now + 60 * 60 * 24 * 365;
$vb_cookie_domain = (!empty($vb_options['cookiedomain']) ? $vb_options['cookiedomain'] : $GLOBALS['cookie_domain']);
// Per RFC 2109, cookie domains must contain at least one dot other than the
// first. For hosts such as 'localhost' or IP Addresses we don't set a cookie domain.
// @see conf_init()
if (!(count(explode('.', $vb_cookie_domain)) > 2 && !is_numeric(str_replace('.', '', $vb_cookie_domain)))) {
$vb_cookie_domain = '';
}
// Clear out old session (if available).
if (!empty($_COOKIE[$cookie_prefix .'sessionhash'])) {
drupalvb_db_query("DELETE FROM {session} WHERE sessionhash = '%s'", $_COOKIE[$cookie_prefix .'sessionhash']);
}
// Setup user session.
$ip = implode('.', array_slice(explode('.', drupalvb_get_ip()), 0, 4 - $vb_options['ipcheck']));
$idhash = md5($_SERVER['HTTP_USER_AGENT'] . $ip);
$sessionhash = md5($now . request_uri() . $idhash . $_SERVER['REMOTE_ADDR'] . user_password(6));
drupalvb_db_query("REPLACE INTO {session} (sessionhash, userid, host, idhash, lastactivity, location, useragent, loggedin) VALUES ('%s', %d, '%s', '%s', %d, '%s', '%s', %d)", $sessionhash, $vbuser['userid'], substr($_SERVER['REMOTE_ADDR'], 0, 15), $idhash, $now, '/forum/', $_SERVER['HTTP_USER_AGENT'], 2);
// Setup cookies.
setcookie($cookie_prefix .'sessionhash', $sessionhash, $expire, $cookie_path, $vb_cookie_domain);
setcookie($cookie_prefix .'lastvisit', $now, $expire, $cookie_path, $vb_cookie_domain);
setcookie($cookie_prefix .'lastactivity', $now, $expire, $cookie_path, $vb_cookie_domain);
setcookie($cookie_prefix .'userid', $vbuser['userid'], $expire, $cookie_path, $vb_cookie_domain);
setcookie($cookie_prefix .'password', md5($vbuser['password'] . variable_get('drupalvb_license', '')), $expire, $cookie_path, $vb_cookie_domain);
return TRUE;
}
Спасибо, авторизация прошла, остается только проверить чтобы не выкидывало
oriGN добавил 21.09.2010 в 17:08
Вот зараза выкидывает как только проходит время жизни куков, задаваемые в админке форума, хотя не должно, рано порадовался
Last edited by oriGN : 09-21-2010 at 06:08 PM.
Reason: Добавлено сообщение
@oriGN
Простоузер
Join Date: Dec 2009
Posts: 4
Reputation:
Lamer -2
Репутация в разделе: -2
Помогите разобраться с куками
0
Описывал уже свою проблему но в другом разделе http://vbsupport.ru/forum/showthread.php?t=37153
На данном этапе проблема такова: создаю в своем мосте между сайтом и форумом куки, такие же как если ставить галочку "Запомнить" при входе на форум, но по прошествии Тайм-аута сессии (в секундах) пользователя опять выкидывает, хотя не должно. Помогите разобраться чего не хватает.