Как сделать - после авторизации остаться на той же странице

Автор gorbi, 08 Апрель 2017, 18:41:11

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

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

gorbi

Столкнулся с проблемой для гостей - я предлагаю им залогиниться. Если они залогиниваются, то их выбрасывает на главную страницу. Это плохо, если человек пришёл на конкретную страницу из поисковика.

Как быть?

GeorG

Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

kak2z

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

kak2z

Вариант простейшего решения)))
файл LogInOut.php
найти в нем
Код
		// Strike!  You're outta there!

и НАД этим текстом вставить этот код

Код
		/*
* Return to the entry point
* fix by kak2z.
*/
if(!empty($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], 'dlattach') === false && preg_match('~(board|topic)[=,]~', $_SERVER['HTTP_REFERER']) != 0){
$return_url = str_replace($scripturl . '?', '', $_SERVER['HTTP_REFERER'], $count);
if($count == 1){
$_SESSION['login_url'] = $return_url;
}
}

будет возвращать в раздел или в топик..
если первый раз неправильно ввели логин/пароль то потом уже не вернет в топик или раздел..
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

gorbi

Цитата: GeorG от 08 Апрель 2017, 20:50:52Мод Remember Position After Login/Logout, только он не бесплатный.
На моём веку это первый платный мод, который не имеет хоть какого-то бесплатного аналога.

Есть ещё популярные платные моды без аналога?

gorbi

Цитата: kak2z от 09 Апрель 2017, 00:09:00Вариант простейшего решения)))
файл LogInOut.php
найти в нем
Код
		// Strike!  You're outta there!

и НАД этим текстом вставить этот код

Код
		/*
* Return to the entry point
* fix by kak2z.
*/
if(!empty($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], 'dlattach') === false && preg_match('~(board|topic)[=,]~', $_SERVER['HTTP_REFERER']) != 0){
$return_url = str_replace($scripturl . '?', '', $_SERVER['HTTP_REFERER'], $count);
if($count == 1){
$_SESSION['login_url'] = $return_url;
}
}

будет возвращать в раздел или в топик..
если первый раз неправильно ввели логин/пароль то потом уже не вернет в топик или раздел..

А это сложно в мод завернуть?

kak2z

Цитата: gorbi от 09 Апрель 2017, 08:47:54А это сложно в мод завернуть?
не сложно)) но мне кажется что надо будет это решение дорабатывать))
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

gorbi

Почитал ветку на "главном" форуме. Там что-то втирают про безопасность при обсуждении того, почему этого нет в коробке.

gorbi

Кстати, при розлогинивании тоже выбрасывает на главную страницу. Тоже видимо из побуждений приватности.

Liza

Цитата: gorbi от 08 Апрель 2017, 18:41:11Если они залогиниваются, то их выбрасывает на главную страницу. Это плохо, если человек пришёл на конкретную страницу из поисковика.

Если пришли из поисковика то им прежде чем логиниться сначала придется зарегиться ...

gorbi

Цитата: Liza от 09 Апрель 2017, 11:44:59Если пришли из поисковика то им прежде чем логиниться сначала придется зарегиться ...
Именно и "потерять" страницу, на которую пришёл и возможно у человека возникло желание ответить. Теперь попадает после регистрации на точку входа.

gorbi

Рекомендую ради интереса потестить юзабилити для гостей. Я обнаружил много интересного. А ведь мы боремся за превращение гостя в пользователя. В большинстве случаев.

S.T.A.L.K.E.R.

Цитата: kak2z от 09 Апрель 2017, 00:09:00Вариант простейшего решения)))
Ещё проще.
Файл файл LogInOut.php,найти
Код
 loadLanguage('Login');
 loadTemplate('Login');
 $context['sub_template'] = 'login';
Добавить после
Код
$_SESSION['prev_page'] = $_SERVER['HTTP_REFERER'];
Найти
Код
                // Some whitelisting for login_url...
if (empty($_SESSION['login_url']))
redirectexit();
Заменить
Код
               // Some whitelisting for login_url...
if (empty($_SESSION['login_url']))
header("Location: " . $_SESSION['prev_page']);
Есть так же решение как после разлогивания остаться на той же странице.
Найти
Код
if (empty($_SESSION['logout_url']))
redirectexit('', $context['server']['needs_login_fix']);
Заменить
Код
		if (empty($_SESSION['logout_url']))
{
//Let's see if the REFERER is empty if it's no, take the next step
if (!empty($_SERVER['HTTP_REFERER']))
{
redirectexit($_SERVER['HTTP_REFERER']); //Let's go back to the page where we logout
}
else
{
redirectexit('', $context['server']['needs_login_fix']); //There's no HTTP_REFERER, go to the main page.
}
}