Advertisement:

Author Topic: Сессиия болтается в адресной строке. Да ка  (Read 4887 times)

Offline webSniff

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

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

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

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

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

Объясните в двух словах, как работают сессии/авторизация/куки в SMF. Начал разбираться, но пока еще в коде SMF шарю плохо, хотя PHP знаю хорошо. Уж больно там сильные заморочки с безопасностью - на каждом шагу проверки куков, random_code и т. д. Да и отладка сильно усложнена - не ООП, функции ничего не принимают и не возвращают, работая с глобальными переменными. Жесть одним словом...
« Last Edit: December 03, 2006, 08:40:36 PM by webSniff »

Offline MpaK

  • Semi-Newbie
  • *
  • Posts: 83
  • Gender: Male
    • Mrak - Design4Underground
пара вариантов

1. попроси хостера в php.ini прописать
Code: [Select]
session.use_cookies = 1
если есть у самого доступ можно и самому

2. можно в index.php первой строкой
Code: [Select]
@ini_set('session.use_cookies', 1);
а авторизация все нормально, в сессию и куку кладется инфа, хэширование пароля там своё какое-то, все как обычно

Offline †MavN†

  • Local Moderator
  • Sophist Member
  • *
  • Posts: 1,203
  • Gender: Male
  • MavnGroup
    • MavnGroup
посмотри параметры php.ini
session.use_trans_sid должно быть Off.

Offline webSniff

  • Newbie
  • *
  • Posts: 2
MpaK
Вы наверно имели в виду session.use_only_cookies? Стоит 1.
вообще было:
Code: [Select]
// 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 глючит?

Но проблему решил с помощью своего старого трюка:
Code: [Select]
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().