Вылогинивание через 60 минут (в новой теме оформления)

Автор Slavegirl, 13 декабря 2012, 14:08:37

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Slavegirl

Приобрела новую тему оформления. Оказалось, что вместе с этим параллельно заплатила за пару десятков визуальных багов, на поиск и исправление которых ушла неделя. Когда тему сделала "по-умолчанию" обнаружила очередной баг: длительность любой сессии составляет теперь 60 минут, так как залогинивание на форум начало осуществляться с этой темы.

Код, который отвечает за логин в систему:

index.template.php (моя новая тема)

// Otherwise they're a guest - this time ask them to either register or login - lazy bums...
else
{
echo '
<script type="text/javascript" src="', $settings['default_theme_url'], '/scripts/sha1.js"></script>
<form id="guest_form" action="', $scripturl, '?action=login2" method="post" accept-charset="', $context['character_set'], '" ', empty($context['disable_login_hashing']) ? ' onsubmit="hashLoginPassword(this, \'' . $context['session_id'] . '\');"' : '', '>
<input type="text" name="user" class="login_id" />
<input type="password" name="passwrd" class="login_pw" />
<input type="submit" value="" class="login_button" />
<a class="register" href="', $scripturl, '?action=register"></a>
<input type="hidden" name="hash_passwrd" value="" />
</form>';
}


index.template.php (моя предыдущая тема, проблем с длительностью сессии не было)

// Otherwise they're a guest - this time ask them to either register or login - lazy bums...
else
{
echo '
<script language="JavaScript" type="text/javascript" src="', $settings['default_theme_url'], '/scripts/sha1.js"></script>
<form action="', $scripturl, '?action=login2" method="post" accept-charset="', $context['character_set'], '" class="smalltext" ', empty($context['disable_login_hashing']) ? ' onsubmit="hashLoginPassword(this, \'' . $context['session_id'] . '\');"' : '', '>
<div id="ds-usernme">
<input id="usrnme" name="user" type="text" onfocus="if(this.value==\'', $txt['username'], '\')value=\'\';" onblur="if(this.value==\'\')value=\'', $txt['username'], '\';" value="', $txt['username'], '" />
</div>
<div id="ds-passwrd">
<input id="psswrd" name="passwrd" type="password" onfocus="if(this.value==\'', $txt['password'], '\')value=\'\';" onblur="if(this.value==\'\')value=\'', $txt['password'], '\';" value="', $txt['password'], '" />
</div>
<input id="loginbutton" type="submit" value="" name="submit" />
<input type="hidden" name="cookielength" value="-1" />
</form><br \>';
}


index.template.php (стандартная тема default)

// Otherwise they're a guest - this time ask them to either register or login - lazy bums...
elseif (!empty($context['show_login_bar']))
{
echo '
<script type="text/javascript" src="', $settings['default_theme_url'], '/scripts/sha1.js"></script>
<form id="guest_form" action="', $scripturl, '?action=login2" method="post" accept-charset="', $context['character_set'], '" ', empty($context['disable_login_hashing']) ? ' onsubmit="hashLoginPassword(this, \'' . $context['session_id'] . '\');"' : '', '>
<div class="info">', sprintf($txt['welcome_guest'], $txt['guest_title']), '</div>
<input type="text" name="user" size="10" class="input_text" />
<input type="password" name="passwrd" size="10" class="input_password" />
<select name="cookielength">
<option value="60">', $txt['one_hour'], '</option>
<option value="1440">', $txt['one_day'], '</option>
<option value="10080">', $txt['one_week'], '</option>
<option value="43200">', $txt['one_month'], '</option>
<option value="-1" selected="selected">', $txt['forever'], '</option>
</select>
<input type="submit" value="', $txt['login'], '" class="button_submit" /><br />
<div class="info">', $txt['quick_login_dec'], '</div>';

if (!empty($modSettings['enableOpenID']))
echo '
<br /><input type="text" name="openid_identifier" id="openid_url" size="25" class="input_text openid_login" />';

echo '
<input type="hidden" name="hash_passwrd" value="" />
</form>';
}


Насколько я поняла, проблема заключается в отсутствии строки в новой теме:

<input type="hidden" name="cookielength" value="-1" />

Вопрос, как эту строку внедрить в код, чтобы не нарушилась общая функциональность.
Заранее большое спасибо за советы!

С уважением,
Slavegirl

maestrosite.ru

Правильный вопрос - половина ответа!

Вы правильно подметили. Для указания, что не надо учитывать время логина, требуется указать значение "-1". Выявленную вами строку можно поместить, например, под строку <input type="submit" value="" class="login_button" /> в вашей новой теме
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

digger®

Лучше добавьте целиком

<select name="cookielength">
<option value="60">', $txt['one_hour'], '</option>
<option value="1440">', $txt['one_day'], '</option>
<option value="10080">', $txt['one_week'], '</option>
<option value="43200">', $txt['one_month'], '</option>
<option value="-1" selected="selected">', $txt['forever'], '</option>
</select>

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

Slavegirl

maestrosite.ru, digger, спасибо!

digger, по поводу выбора длительности сессии я думала. Но подозреваю, что большинство пользователей все же привыкли к минимализму, как на vBulletin с их галочкой "Запомнить". А выпадающее меню, как принято на SMF по-умолчанию, немного не впишется в мою тему.

В виде компромисса, можно установить авто длительность сессии, но не вечную, а, например, 1 месяц.