#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);
, и я также получаю там пустой массив. Странно.