У некоторых пользователей возникает такая проблема:
При пользовании "Перехода по форумам" внизу справа их просто напросто выкидывает из своего акаунта и пишет "Здравствуйте Гость".
Такая же проблема возникает иногда при переходе по ссылке в форумы открытые только для просмотра зарегистрированным пользователям.
Это какой-то глюк? Или все же ошибка, которую можно исправить?
1. lisiycat - 21 февраля 2009 — 14:16 - перейти к сообщению
2. yura3d - 21 февраля 2009 — 15:26 - перейти к сообщению
lisiycat пишет:
У некоторых пользователей возникает такая проблема:
При пользовании "Перехода по форумам" внизу справа их просто напросто выкидывает из своего акаунта и пишет "Здравствуйте Гость".
Такая же проблема возникает иногда при переходе по ссылке в форумы открытые только для просмотра зарегистрированным пользователям.
Это какой-то глюк? Или все же ошибка, которую можно исправить?
При пользовании "Перехода по форумам" внизу справа их просто напросто выкидывает из своего акаунта и пишет "Здравствуйте Гость".
Такая же проблема возникает иногда при переходе по ссылке в форумы открытые только для просмотра зарегистрированным пользователям.
Это какой-то глюк? Или все же ошибка, которую можно исправить?
Проблема вся в том, что некоторые пользователи при доступе к форуму набирают адрес через www, а на Вашем сайте при установке форума указывался адрес без www, что и прописано в файле конфигурации. Именно поэтому все ссылки имеют вид без www, и когда пользователь кликает на такую ссылку, то при переходе с поддомена www на домен теряется информации о сессии и установленных куках, что и приводит к разлогиниванию. Наиболее разумное решение - просто переадресовывать людей на правильный адрес (так сделано практически во всех других движках).
Для этого открываем файл include/common.php, находим строку:
CODE:
$fm->exbb['version'] = FM_VERSION;
И под ней вставляем строки:
CODE:
// На домене установки форум будет доступен только по тому URL, который указан в админке
// Это предотвращает проблемы с работой сессий и куки на производных поддоменах типа 'www' и т п.
preg_match("#(www\.|)([[:alnum:]\.\-]+)/([[:alnum:]\/\.\-]+)#is", $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'], $req_url);
preg_match("#(www\.|)([[:alnum:]\.\-]+)/([[:alnum:]\/\-]+)#is", $fm->exbb['boardurl'], $set_url);
if ($req_url[2] == $set_url[2] && $req_url[1] != $set_url[1])
header('Location: http://'.$set_url[2].'/'.$req_url[3].(($_SERVER['QUERY_STRING'] ? '?'.$_SERVER['QUERY_STRING'] : '')));
unset($req_url, $set_url);
// Это предотвращает проблемы с работой сессий и куки на производных поддоменах типа 'www' и т п.
preg_match("#(www\.|)([[:alnum:]\.\-]+)/([[:alnum:]\/\.\-]+)#is", $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'], $req_url);
preg_match("#(www\.|)([[:alnum:]\.\-]+)/([[:alnum:]\/\-]+)#is", $fm->exbb['boardurl'], $set_url);
if ($req_url[2] == $set_url[2] && $req_url[1] != $set_url[1])
header('Location: http://'.$set_url[2].'/'.$req_url[3].(($_SERVER['QUERY_STRING'] ? '?'.$_SERVER['QUERY_STRING'] : '')));
unset($req_url, $set_url);