Jump to content

Проверка авторизации

Featured Replies

Posted
comment_175999

Здравствуйте.

Форум расположен по адресу site.ru/forum/, нужно со страницы site.ru проверить авторизован ли пользователь на форуме.

Какой наиболее быстрый способ это сделать?

Подключившись к классу

require $_SERVER['DOCUMENT_ROOT'].'/forum/init.php';

Или через получения куки ips4_IPSSessionFront и поиск в БД запросом?

  • Author
comment_176000

Загрузка страницы при проверке авторизации через классы форума занимает 0.013140201568604 сек

require $_SERVER['DOCUMENT_ROOT'].'/forum/init.php';
\IPS\Session\Front::i();
$member_IPS = \IPS\Member::loggedIn();

В то время как проверка запросом через БД страница загружается за 0.0060040950775146 сек.

$sql = $pdoBDforum->prepare("SELECT *  FROM `core_sessions` LEFT JOIN `core_members` USING(`member_id`) WHERE `id` = :cookie");
$sql->execute(array(':cookie' => $_COOKIE['ips4_IPSSessionFront']));

Но тут правда есть проблемка, кука ips4_IPSSessionFront постоянно пропадает, такое ощущение, что каждые 10-30 минут )) И появляется только если снова зайти на форум. 

  • Author
comment_176057

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

require $_SERVER['DOCUMENT_ROOT'].'/forum/init.php';
\IPS\Session\Front::i();
$member_IPS = \IPS\Member::loggedIn();

 

  • Author
comment_176109

HooLIGUN поясните пожалуйста немного по коду, что вот это значит? Правильно ли понимаю, что если не существует куки IPSSessionFront, то они будут установлены и возвращены? Каким сроком жизни?

\IPS\Session::i()->id

 

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

require $_SERVER['DOCUMENT_ROOT'].'/forum/init.php';
\IPS\Session\Front::i();
$sessionId = isset( \IPS\Request::i()->cookie['IPSSessionFront'] ) ? \IPS\Request::i()->cookie['IPSSessionFront'] : \IPS\Session::i()->id;

$sql = $pdoBDforum->prepare("SELECT *  FROM `core_sessions` LEFT JOIN `core_members` USING(`member_id`) WHERE `id` = :cookie");
$sql->execute(array(':cookie' => $sessionId));
$dataBD = $sql->fetch();

 

  • Author
comment_176110

Получаю ID авторизации, но почему-то с таблицы core_sessions в БД постоянно пропадают данные об авторизации. Пустой member_id и другие поля.. 

211229095604.png

  • 1 year later...
  • Author
comment_193884

Снова возвращаюсь к теме.

require $_SERVER['DOCUMENT_ROOT'].'/forum/init.php';
\IPS\Session\Front::i();
$member_IPS = \IPS\Member::loggedIn();

Почему данный код не возвращает информацию о пользователе за пределами форума, если на форум не заходили более N минут. Если открыть страницу форума, а потом закрыть её. То данный код возвращает информацию о пользователе.

Хочу проверить с других страниц сайта, авторизован ли пользователь на форуме...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.