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

Автор 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

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

Yarik

Цитата: 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.
}
}