[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Теряется сессия
Лена
Делаю мост между сайтом и форумом.
Если авторизуюсь на сайте и перехожу на форум - все нормально, я на форуме уже авторизована.
Если авторизуюсь на форуме - на сайте я остаюсь неавторизованной.
Теряется сессия при переходе из форума на сайт.

При авторизации на сайте пользователь пишется в сессию - $_SESSION['valid_userid'].
Поэтому когда я авторизую юзера на форуме, я пишу его в $_SESSION['valid_userid'].

Авторизовалась на форуме. Захожу после этого на сайт. Делаю print_r($_SESSION); - сессионные данные есть(т.е. сама сессия стартует), но среди них нет 'valid_userid'. Хотя на форуме если сделать print_r($_SESSION); 'valid_userid' есть.

Почему так происходит?





Спустя 2 минуты, 16 секунд (24.03.2011 - 23:55) inpost написал(а):
Лена
А форум как на поддомене лежит, или в целом просто отдельная папка?

Спустя 2 минуты, 41 секунда (24.03.2011 - 23:58) Лена написал(а):
Форум просто в отдельной папке.
Если от корня сайта - ext/forum/

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

Спустя 6 минут, 11 секунд (25.03.2011 - 00:04) neadekvat написал(а):
По идее, просто так, да еще одно значение, потеряться не может (хотя мосты строил, "идеи" там через раз работают).

Если начать с элементарного.. PHPSESSID одинаковый? Стартуется одинаково? Если ставятся кукуисы - то одинаково?

Спустя 14 минут, 44 секунды (25.03.2011 - 00:19) Лена написал(а):
PHPSESSID - одинаковый.

На сайте сессия стартуется просто session_start();

На форуме - старт запихнули в функции. Привожу все.

// Attempt to start the session, unless it already has been.
function loadSession()
{
global $HTTP_SESSION_VARS, $modSettings, $boardurl, $sc;

// Attempt to change a few PHP settings.
@ini_set('session.use_cookies', true);
@ini_set('session.use_only_cookies', false);
@ini_set('url_rewriter.tags', '');
@ini_set('session.use_trans_sid', false);
@ini_set('arg_separator.output', '&');

if (!empty($modSettings['globalCookies']))
{
$parsed_url = parse_url($boardurl);

if (preg_match('~^\d{1,3}(\.\d{1,3}){3}$~', $parsed_url['host']) == 0 && preg_match('~(?:[^\.]+\.)?([^\.]{2,}\..+)\z~i', $parsed_url['host'], $parts) == 1)
@ini_set('session.cookie_domain', '.' . $parts[1]);
}
// !!! Set the session cookie path?

// If it's already been started... probably best to skip this.

if ((@ini_get('session.auto_start') == 1 && !empty($modSettings['databaseSession_enable'])) || session_id() == '')
{
// Attempt to end the already-started session.
if (@ini_get('session.auto_start') == 1)
@session_write_close();

// This is here to stop people from using bad junky PHPSESSIDs.
if (isset($_REQUEST[session_name()]) && preg_match('~^[A-Za-z0-9]{16,32}$~', $_REQUEST[session_name()]) == 0 && !isset($_COOKIE[session_name()]))
{
$_REQUEST[session_name()] = md5(md5('smf_sess_' . time()) . mt_rand());
$_GET[session_name()] = md5(md5('smf_sess_' . time()) . mt_rand());
$_POST[session_name()] = md5(md5('smf_sess_' . time()) . mt_rand());
}

// Use database sessions? (they don't work in 4.1.x!)
if (!empty($modSettings['databaseSession_enable']) && @version_compare(PHP_VERSION, '4.2.0') != -1)
{
session_set_save_handler('sessionOpen', 'sessionClose', 'sessionRead', 'sessionWrite', 'sessionDestroy', 'sessionGC');
@ini_set('session.gc_probability', '1');
}
elseif (@ini_get('session.gc_maxlifetime') <= 1440 && !empty($modSettings['databaseSession_lifetime']))
@ini_set('session.gc_maxlifetime', max($modSettings['databaseSession_lifetime'], 60));

// Use cache setting sessions?
if (empty($modSettings['databaseSession_enable']) && !empty($modSettings['cache_enable']) && php_sapi_name() != 'cli')
{
if (function_exists('mmcache_set_session_handlers'))
mmcache_set_session_handlers();
elseif (function_exists('eaccelerator_set_session_handlers'))
eaccelerator_set_session_handlers();
}

session_start();

// Change it so the cache settings are a little looser than default.
if (!empty($modSettings['databaseSession_loose']))
header('Cache-Control: private');
}

// Set the randomly generated code.
if (!isset($_SESSION['rand_code']))
$_SESSION['rand_code'] = md5(session_id() . mt_rand() . (string) microtime() . $modSettings['rand_seed']);
$sc = $_SESSION['rand_code'];

// While PHP 4.1.x should use $_SESSION, it seems to need this to do it right. Also reseed the random generator.
if (@version_compare(PHP_VERSION, '4.2.0') == -1)
{
$HTTP_SESSION_VARS['php_412_bugfix'] = true;
mt_srand((float) microtime() * 10000010 + $modSettings['rand_seed']);
}
else
mt_srand();
}

function sessionOpen($save_path, $session_name)
{
return true;
}




Если ставятся кукуисы - то одинаково? - мне этот вопрос непонятен. При авторизации все ж пишется в сессию. Правда, когда при авторизации на форуме ставится кукис.

Спустя 10 минут, 46 секунд (25.03.2011 - 00:30) neadekvat написал(а):
Цитата (Лена @ 25.03.2011 - 00:19)
Если ставятся кукуисы - то одинаково? - мне этот вопрос непонятен.

Быть может, домен указан по-разному. Здесь, например, .домен.ру. А на сайте, возможно, ставишь домен.ру и уже не пашет smile.gif А вдруг.

Это smf? В зависимости от версии, по-моему, очень много написано о нем, в т.ч. и про мост. Я думаю, стоит поискать и почитать - там уже и подводные камни могут быть описаны, которые так долго можно искать.
Скажи, какая у тебя версия форума, тоже погляжу - скоро подключать надо будет.

Спустя 13 минут, 47 секунд (25.03.2011 - 00:43) Лена написал(а):
Я на локалхосте ставлю, после перенесу на сайт.
Да, это smf. Версия smf_1-1-13_russian-utf8. Вторую не стала брать, пишут, что еще в разработке и не рекомендуют вроде как ставить.
Сам форум хороший, мне он больше нравится, чем phpbb - нет всяких ненужных наворотов, рекламные блоки я убрала, дописала переключатель между языками и ссылку перехода на сайт, а так там все необходимое есть.
Про мост писали, что есть, но писали также, что он кривой. Один я брала, у меня не пошел, села писать сама.
Сейчас вернусь туда, где писали, и скачаю посмотрю хоть кривой. )

Спустя 9 минут, 7 секунд (25.03.2011 - 00:52) neadekvat написал(а):
Вот это, например, читала? У меня форум стоит, но соединять пока не с чем - не могу проверить ничего smile.gif

Спустя 3 дня, 11 часов, 38 минут, 58 секунд (28.03.2011 - 11:31) Лена написал(а):
Это читала и многое другое. Оно с этой версией не идет.
Я делала проще - просто ставила кукис, без использования функции.

Разрешили пока оставить так, все равно в ближайшем будущем форум будет писаться специально под систему.

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.