сеанс phpbb между папками

#php #session #phpbb

#php #сеанс #phpbb

Вопрос:

Я использую phpBB (2.0.22) на веб-сайте, расположенном по myWebSite.com/forum

Я создаю несколько других страниц в myWebSite.com/otherForders

Что я хочу, так это проверить, вошел ли человек в myWebSite.com/forum когда они находятся в myWebSite.com/otherForders

Интересно, возможно ли это.

Я пробовал session_start(); print_r($_SESSION); в myWebSite.com/otherForders/index.php и все, что я получаю, это Array ( ) (пустой массив).

У кого-нибудь есть решение? Спасибо.

Ответ №1:

Вы должны интегрировать свою доску с вашим кодом

Вот пример ::

 define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//
  

Затем используйте

$userdata[‘имя пользователя’], $userdata [‘идентификатор пользователя’] и т.д. в $ userdata есть массив со значениями из users_table для вашей платы для вошедшего в систему пользователя.

Комментарии:

1. Спасибо @Alex Emilov, это, как правило, работает несколько, но я получаю [имя пользователя] => Анонимный

2. Ну, я пишу в основном на phpBB3, и я не уверен в этой интеграции, я скачал свежую копию phpBB2 и просмотрел несколько страниц, и, похоже, это тот самый код. Возможно, мы что-то упускаем с аутентификацией. Вы уверены, что вошли в систему? Я установлю 2.0.22 и снова опубликую.

3. Я установил его и протестировал, и, похоже, он работает именно так. Во-первых, вы уверены, что правильно указали путь к файлу, см. $ phpbb_root_path = ‘./’; (возможно, у вас ошибка 0, и для этого у нас нет результата), а вторая проблема заключается в том, что вам нужен параметр SID в url. Скопируйте вашу sid-ссылку из индекса вашего форума и вставьте URL-адрес нового файла. index.php?sid=a90814a1fb6f8ce49f1bb6edde9f839b => test.php?sid=a90814a1fb6f8ce49f1bb6edde9f839b

4. Что ж, проблема, безусловно, есть. Я авторизуюсь, когда нахожусь в site.com/forum/index.php . Однако, когда я создаю site.com/forum/test.php с данными, которые вы написали выше, я получаю [user_id] => -1 PS. Спасибо за попытку, друг.

5. Да, перепробовал все. Путь указан правильно, иначе он выдаст мне ошибку (сообщение об ошибке равно 1). Также пытался скопировать sid

Ответ №2:

Переменная session не будет доступна таким образом. Файл cookie сеанса вашего phpbb хранится по адресу myWebSite.com/forum , и когда вы посещаете страницы из forum каталога ie, (otherForders) сеанс myWebSite.com/forum там будет недоступен, и будет отображаться новый сеанс, который, очевидно, является пустым массивом, пока вы не присвоите некоторые значения, и файл cookie сеанса для этого сеанса не будет сохранен по адресу myWebSite.com/otherForders .

Вы должны указать php сохранить сеанс в корневом домене, который является myWebSite.com , чтобы сеанс был доступен во всех других каталогах.

Вы могли бы сделать это с помощью ini_set .

Вы должны поставить ini_set перед session_start() вызовом. Я не знаю о том, phpbb предоставляют ли они какой-либо интерфейс администратора для изменения значения домена cookie сеанса. Вам следует проверить, предоставляет ли phpbb это.

ini_set('session.cookie_domain','.myWebSite.com');

вы также могли бы попробовать

 session_set_cookie_params(0, '/', '.myWebSite.com');
session_start();
  

Комментарии:

1. Спасибо @Shakti Singh, где использовать ini_set('session.cookie_domain','.myWebSite.com'); часть, пожалуйста?

2. вы должны вызвать его перед session_start()

3. @Jeremy: Потому что ваш сеанс phpbb все еще находится в домене mywebsite.com/forum . Это также должно быть на mywebsite.com

4. Спасибо, структура phpbb сложная, я даже не нашел, где они выполняют session_start (), используя поиск DW. В любом случае, спасибо.

5. Я даже пытался создать test.php в mywebsite.com/forum / чтобы увидеть, как там отображаются сеансы с session_start(); print_r($_SESSION); , и я также получаю там пустой массив. Странно.