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

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

Я создаю некоторые другие страницы в myWebSite.com/otherFororders

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

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

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

Кто-нибудь с решением? Спасибо.


person Jeremy Roy    schedule 16.04.2011    source источник


Ответы (2)


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

Вот образец::

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['username'], $userdata['user_id'] и т. д. $userdata содержит массив со значениями из таблицы users_table для вашей доски для вошедшего в систему пользователя.

person Alex Emilov    schedule 16.04.2011
comment
Спасибо @Alex Emilov, это, как правило, работает, но я получаю [имя пользователя] => Anonymous - person Jeremy Roy; 16.04.2011
comment
Ну, я кодирую в основном на phpBB3 и не уверен в этой интеграции, я скачал свежую копию phpBB2 и посмотрел некоторые страницы, и кажется, что это код. Может быть, мы что-то упустили с аутентификацией. вошли в систему? Я установлю 2.0.22 и опубликую снова. - person Alex Emilov; 16.04.2011
comment
Я установил его и протестировал, и, похоже, он работает именно так. Во-первых, вы уверены, что указали правильный путь к файлу, см. $phpbb_root_path = './'; (у вас может быть error_reporting 0, и для этого у нас нет результата), и вторая проблема заключается в том, что вам нужен параметр SID в URL-адресе. Скопируйте ссылку на sid из индекса вашего форума и вставьте URL-адрес нового файла. index.php?sid=a90814a1fb6f8ce49f1bb6edde9f839b => test.php?sid=a90814a1fb6f8ce49f1bb6edde9f839b - person Alex Emilov; 16.04.2011
comment
Ну проблема точно есть. Я вхожу в систему, когда нахожусь на site.com/forum/index.php. Однако, когда я создаю site.com/forum/test.php с данными, которые вы написали выше, я получаю [user_id] => -1 PS. Спасибо за попытку друг. - person Jeremy Roy; 16.04.2011
comment
Да все перепробовал. Путь правильный, иначе он выдаст мне ошибку (отчет об ошибке равен 1). Пробовал копировать sid - person Jeremy Roy; 16.04.2011
comment
подождите, вроде работает. Попробовал сейчас в ФФ. Раньше я работал с Chrome - person Jeremy Roy; 16.04.2011
comment
Наконец-то заработало, странно, что не работает в Хроме, а только в ФФ. - person Jeremy Roy; 16.04.2011

Переменная сеанса не будет доступна таким образом. Файл cookie сеанса вашего phpbb хранится в myWebSite.com/forum, и когда вы посещаете страницы из каталога forum, т.е. (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();
person Shakti Singh    schedule 16.04.2011
comment
Спасибо @Shakti Singh, пожалуйста, где использовать часть ini_set('session.cookie_domain','.myWebSite.com');? - person Jeremy Roy; 16.04.2011
comment
вы должны вызвать его до session_start() - person Shakti Singh; 16.04.2011
comment
@Jeremy: Потому что ваш сеанс phpbb все еще находится в домене mywebsite.com/forum. Это также должно быть в mywebsite.com - person Shakti Singh; 16.04.2011
comment
Спасибо, структура phpbb сложная, я даже не нашел, где они делают свой session_start() с помощью поиска в DW. Спасибо, в любом случае. - person Jeremy Roy; 16.04.2011
comment
Я даже пытался создать test.php на mywebsite.com/forum/, чтобы увидеть, как там появляются сеансы с session_start(); print_r($_SESSION);, и я также получаю там пустой массив. Странный. - person Jeremy Roy; 16.04.2011