Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как убрать редирект на главную после регистрации?

Как убрать редирект на главную после регистрации?


     09.01.2020    регистрация, редирект    Все вопросы » Общие вопросы по PHP    1443

вопрос
Здравствуйте!

На сайте включена стандартная авторизация DLE через соц. сети.

1. При регистрации со страниц модулей "/?do=..." (даже стандартных) идёт редирект на главную страницу, при последующих авторизациях редиректа уже нет, пользователь после авторизации остаётся на той же самой странице.
2. При этом на страницах новостей, категорий, статических страниц логика регистрации DLE другая - после регистрации пользователь остаётся на той же странице, а не редиректится на главную.

Как сделать, чтобы на страницах модулей "/?do=..." не происходил редирект на главную, а пользователь оставался на той же странице, с которой вызвал регистрацию?

Ответа пока нет


20 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 9 января 2020 15:38 -

Здравствуйте. Судя по коду DLE после окончательной валидации пользователь остается на ее странице с системным сообщением.

	if( $stop ) {
		
		msgbox( $lang['reg_err_18'], $stop );
		
	} else {

		$db->query( "UPDATE " . USERPREFIX . "_users SET fullname='$fullname', info='$info', land='$land', xfields='$filecontents' WHERE user_id='{$row['user_id']}'" );

		msgbox( $lang['reg_ok'], $lang['reg_ok_1'] );

		$stopregistration = TRUE;
	}

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

6nick9
Юзер

6nick9 - 9 января 2020 16:32 -

Я так понимаю это для обычной регистрации, а у регистрации через соц. сети у DLE другая логика. Там вместо системного сообщения выводится страница на которой DLE просит подтвердить или изменить логин, который выглядит как Имя+Фамилия.

dj-avtosh
PHP-developer

dj-avtosh - 9 января 2020 16:36 -

В файле social.php переадресация происходит к рефереру:

if( $_SESSION['referrer'] ) {
	$root_href = $_SESSION['referrer'];
} else {
	$root_href = str_replace("index.php","",$_SERVER['PHP_SELF']);
}


Нужно смотреть в переменную $_SESSION['referrer'] в модулях откуда не работает редирект.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

6nick9
Юзер

6nick9 - 9 января 2020 17:28 -

Ну вот в, например, в addnews.php (где кидает на главную после регистрации) эта переменная никак не задана вообще. А в show.full.php (в новостях после регистрации оставляет на странице новости, как надо) есть строка:

$_SESSION['referrer'] = htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES, $config['charset'] );;


В эту сторону смотреть получается?

dj-avtosh
PHP-developer

dj-avtosh - 9 января 2020 17:34 -

похоже на то

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

6nick9
Юзер

6nick9 - 9 января 2020 17:44 -

Добавил

$_SESSION['referrer'] = htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES, $config['charset'] );; 


в static.php (в статических страницах тоже кидает на главную) - перестало кидать. Спасибо)

dj-avtosh
PHP-developer

dj-avtosh - 9 января 2020 17:46 -

для спасибо есть палец вверх у комментов

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Rudoy
ГипноКотЭ

Rudoy - 6 февраля 2020 20:20 -

а на dle 13.3 как исправить? когда написаного выше не нашел ни в одном из указанных php файлах

6nick9
Юзер

6nick9 - 6 февраля 2020 21:27 -

Rudoy, это для DLE 13.3 как раз. И что вы ищите? Этого кода как раз нет, его наоборот надо добавлять.

6nick9
Юзер

6nick9 - 6 февраля 2020 21:26 -

Rudoy, это для DLE 13.3 как раз. И что вы ищите? Этого кода как раз нет, его наоборот надо добавлять.

Rudoy
ГипноКотЭ

Rudoy - 6 февраля 2020 21:33 -

не очень разобрался
какой код конкретно надо добавить в какой файл?
что бы после авторизации не было переадресации на главную страницу?

6nick9
Юзер

6nick9 - 6 февраля 2020 22:03 -

$_SESSION['referrer'] = htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES, $config['charset'] );;


Добавлять во все файлы, которые отвечают за тот или иной модуль. static.php - чтобы не кидало со статических страниц, addnews.php - добавление новости и тд

Rudoy
ГипноКотЭ

Rudoy - 6 февраля 2020 23:59 -

не получилось
сайт dropgame.ru

6nick9
Юзер

6nick9 - 7 февраля 2020 00:04 -

А что вы хотите сделать? Убрать редирект на главную после регистрации здесь /?do=register? А смысл этого какой? Ну будет пользователь видеть после регистрации ошибку 404.

Тут решение для регистрации через соц. сети, ссылки на которые формируются в login.tpl, а login.tpl заинклуден в main.tpl

Rudoy
ГипноКотЭ

Rudoy - 7 февраля 2020 00:27 -

я хочу сделать что бы после авторизации он возвращался на ту же страницу, с которой он перешел к авторизации

Rudoy
ГипноКотЭ

Rudoy - 7 февраля 2020 00:01 -

все равно редирект идет на главную

dj-avtosh
PHP-developer

dj-avtosh - 7 февраля 2020 09:59 -

Можно попробовать в /engine/modules/sitelogin.php найти:

			} else {
				
				$attempt_login = true;
				
			}


добавить ниже:

if ( ! empty ( $_SESSION['referrer'] ) )
{

   header('Location: ' . $_SESSION['referrer']);

}

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Rudoy
ГипноКотЭ

Rudoy - 7 февраля 2020 18:08 -

попробовал
все равно на главную кинуло

Astral
Юзер

Astral - 25 декабря 2020 07:59 -

Имеется в виду, если авторизация сделана через статику к примеру login.html и авторизация через соц сеть вк, то после успешной авторизации, кидает пользователя опять на login.html, соответственно способ выше не решает проблему. А после обычной авторизации, кидает на главную с приставкой index.php

TeraMoune
Эксперт

TeraMoune - 25 декабря 2020 09:02 -

Так всё правильно, пользователь открыл сайт затем открыл страницу login.html затем происходит авторизация и возврат обратно на login.html.

И в движке чаще всего происходит не редирект, а обновление страницы. Когда пользователь открывает ссылку по которой авторизовывается через соц сеть он открывает окно, которое будет закрыто, а вкладка сайта которая открыла окно будет обновлена после авторизации и закрыти окна.

Редиректы используются лишь в случае если по каким-то причинам при нажатии на ссылку авторизации активная вкладка заменяется на страницу где пользователь вводит данные соц сети или подтверждает разрешение предоставить доступ.

Решение простое, авторизация во всплывающем окне.

Тестовый репозиторий установки плагинов: teramoune

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх