Сессиия болтается в адресной строке. Да ка

Started by webSniff, December 03, 2006, 06:39:23 PM

Previous topic - Next topic

webSniff

Главный вопрос:
Поисковики индексируют урлы с сессиями. Как убрать сессии из урлов? Искал на форуме, но ничего не нашел... А ведь это серьезная проблема.. Неужели она только у меня?

Хостинг - мастерхост. Сессии в базе не хранятся.

Дело в том, что пока в запросе не будет передаваться кука с именем и ID сессии, PHP генерирует страницу с "усложненными" ссылками. Ясное дело, поисковики куку не принимают и в следующий запрос ее не включают.

ADDED: Чуть не забыл: SMF 1.1 RC3

Ну и еще вопрос к гуру.

Объясните в двух словах, как работают сессии/авторизация/куки в SMF. Начал разбираться, но пока еще в коде SMF шарю плохо, хотя PHP знаю хорошо. Уж больно там сильные заморочки с безопасностью - на каждом шагу проверки куков, random_code и т. д. Да и отладка сильно усложнена - не ООП, функции ничего не принимают и не возвращают, работая с глобальными переменными. Жесть одним словом...

MpaK

пара вариантов

1. попроси хостера в php.ini прописать
session.use_cookies = 1

если есть у самого доступ можно и самому

2. можно в index.php первой строкой
@ini_set('session.use_cookies', 1);

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

†MavN†

посмотри параметры php.ini
session.use_trans_sid должно быть Off.

webSniff

MpaK
Вы наверно имели в виду session.use_only_cookies? Стоит 1.
вообще было:

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

//phpinfo();


И phpinfo() при отладке показывал адекватные Local Value

А ОНО ВСЕ РАВНО ЛЕЗЛО!!! Все перепробовал - все равно тупо сессию в адрес ставит. Может быть, сам PHP глючит?

Но проблему решил с помощью своего старого трюка:

if(!empty($_COOKIE[session_name()])){
session_id($_COOKIE[session_name()]);
session_start();
}else{
header(sprintf('Set-Cookie: %s=%s; path=/', session_name(), md5(microtime().getmypid()) ));
$_SESSION=array();
}

То есть сессия начинает работать только в случае получения Cookie.
Кука у меня глобальная нестандартная, так что замените код в header(), если кому надо...

Копанул бы поглубже, да пока некогда :)

Фрагменты кода взяты из файла Load.php, функция loadSession().

Advertisement: