Skip to content

Редирект при авторизации

Добрый день. Есть такой хук Redirect back after Login and Logout, он перенаправляет пользователей на страницу, на которой они были до авторизации/выхода из аккаунта.

 

Но его сейчас уже не найти. Возможно ли сделать такой фикс простым способом, как здесь, например? http://ipbskins.ru/forum/topic15102.html#entry101349

Featured Replies

  • Author

@Haktar, это немного не то, здесь нужно вводить адрес редиректа, а надо, чтобы просто оставался на той же странице после авторизации/выхода из учетной записи.

Смотрите в сторону

$_SERVER['HTTP_REFERER']

  • 3 weeks later...
  • Author
$_SERVER['HTTP_REFERER']

Наподобие такого скрипта?

 

<?php header('Location: '.$_SERVER["HTTP_REFERER"]);?>

А куда его нужно добавить?

Edited by Strategius

Наподобие такого скрипта?

 

Да просто $_SERVER['HTTP_REFERER'] без всяких хедеров.

Из поста из темы, ссылка на которую дана в стартовом посте.

$this->registry->getClass('output')->redirectScreen( $return[0], $_SERVER['HTTP_REFERER'] ?: $this->registry->output->formatUrl( $this->settings['board_url'] ) );

  • Author

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

\admin\applications\core\modules_public\global\login.php

		return array( 'redirect', $this->lang->words['thanks_for_logout'], $this->settings['board_url'] );

 

		return array( 'redirect', $this->lang->words['thanks_for_logout'], $_SERVER['HTTP_REFERER'] ?: $this->settings['board_url'] );

  • Author

Работает, спасибо большое! А можно как-нибудь поставить исключение для страниц, доступа к которым нет у гостей? Например, чтобы при выходе из аккаунта на странице профиля перенаправляло на главную?

А можно как-нибудь поставить исключение для страниц, доступа к которым нет у гостей?

Как вариант, http://php.net/manual/ru/function.get-headers.php

Сравниваете первый элемент массива.

С get_headers думаю newbie имел ввиду получить код статуса реферера и, если он не 200 то туда доступ запрещен гостям.

 

		$headers = $_SERVER['HTTP_REFERER'] ? get_headers( $_SERVER['HTTP_REFERER'] ) : '';
	return array( 'redirect', $this->lang->words['thanks_for_logout'], ( isset( $headers[0] ) AND substr( $headers[0], 9, 3 ) == 200 ) ? $_SERVER['HTTP_REFERER'] : $this->settings['board_url'] );

  • Author

@siv1987, спасибо огромное, именно так работает, как нужно!

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.