Скрытие идентификатора сессии

winkel

Guest
Скрытие идентификатора сессии

Доброго времени суток!

Можно ли скрыть идентификатор сессии в строке браузера?
Я ставлю session_start(); на index.php и получается, что все ссылки с главной у меня содержат идентификатор сессии типа http://www.domain.ru/path/index.html?PHPSESSID=e12e8a963fba2e858cc1a21d026a1a18
Что естесственно крайне нежелательно для посиковиков.

Можете что-нить посоветовать?
Может такая тема уже была - я не нашел. В таком случае дайте плиз линк.

Спасибо.
 

Фанат

oncle terrible
Команда форума
а зачем ты вообще стартуешь сессию?
и зачем тебе сессия, в таком случае, если ты не пользуешься её главным достоинством? Ставь куку.
 

winkel

Guest
Фанат, я стартую сессию потому что мне надо на главной использовать сессионные переменные. Ставить куку? И что в ней хранить - идентификатор? или как?
Я вообще-то с куками изначально не хотел работать, т.к. у кого-то они могут быть ведь вообще отключены.

_RVK_, не понял вопроса. В том то и дело что поисковику сессия не нужна. И нужно чтобы он индексировал страницы без идентификаторов.
 

Фанат

oncle terrible
Команда форума
winkel, поскольку ты не понимаешь механизм работы сессий, давай ты сначала прочитаешь PHP FAQ: Сессии. Подробное описание работы и объяснение механизма.
а потом мы продолжим.

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

_RVK_

Новичок
_RVK_, не понял вопроса
Суть вопроса описана в факе, ссылку на который дал Фанат. В крации нужно проверять, стартовать сессию или нет.

Уточни, какие именно переменные ты хранишь в сесии, где, для кого и когда эти перемнные в сессию записываются.
 

winkel

Guest
Спасибо за ссылку. Прочитал.
Вобщем дело так обстоит. Обычный инет магазин. Сессия на главной мне нужна для того, чтобы выводить кол-во товаров в корзине. Задается эта переменная естессно при добавлении товара в корзину. Но только никакой авторизации на сайте нет. Т.е. пришел - набрал что нужно в корзину - оформил заказ и все.

Можно ли сделать так?:
На главной сессию не стартовать, а стартовать ее только в корзине. А на главной прописать:

if (isset($_REQUEST[session_name()])) session_start(); // стартуем только если юзер уже был в корзине
if ($_REQUEST[session_name()] == '') echo "Корзина пуста"; // если он зашел на сайт впервые
 

Фанат

oncle terrible
Команда форума
Не только можно, но и нужно!
Так и надо делать.
таким образом ты и клиентов без кук не потеряешь, и поисковики не обидишь.

только вторая проверка неправильная
надо проверять переменную из сессии, а не реквест
 

winkel

Guest
только вторая проверка неправильная
надо проверять переменную из сессии, а не реквест
Фанат, пардон, а как проверить переменную из сессии, если мы ее не стартуем? Можно написать если не сложно?

Еще такой вопрос. Т.к. поисковики ведь браузерами не пользуются :) то можно проверять переменную HTTP_USER_AGENT и, если она пуста, то сессию не стартовать, т.к. это робот, а в остальных случаях стартовать?
 

SiMM

Новичок
> как проверить переменную из сессии, если мы ее не стартуем?
Нет смысла проверять переменную, если сессия не стартанута. А раз смысла нет - то и проверять ничего не надо. Эта ветка просто не должна выполняться (ибо нафиг).

> можно проверять переменную HTTP_USER_AGENT и, если она пуста, то сессию не стартовать
Нельзя. Не надо ставить костыли на и без того простую задачу. Тем более что HTTP_USER_AGENT - заголовок необязательный, кроме того, поисковики его всё же отправляют, если я не ошибаюсь.
 

Kelkos

Сам себе программер
то можно проверять переменную HTTP_USER_AGENT и, если она пуста, то сессию не стартовать
Хм.. неразу не видел пустой HTTP_USER_AGENT.. Все поисковики туда что то пишут.. обычно это название поисковика и ссылка на инфу о нём.
 

winkel

Guest
Фанат, все отлично! Спасибо! не то, чтобы неподумав - просто не знал.

А насчет HTTP_USER_AGENT это мне не только (даже не столько) для корзины. Мне просто в принципе интересно как отличиь паука от чеорвека.
Т.к. у человека эта переменныя имеет примерно такой формат: "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", то что если сделать вот так:

$browser = explode (" ", $HTTP_USER_AGENT);

и дальше, проверять $browser[0], предварительно создав массив всех известных браузеров?
 

Vasya

Guest
... и дальше, проверять $browser[0], предварительно создав массив всех известных браузеров?
Лучше не заморачиваться с отделением поисковиков от обычных юзеров, ибо часто один и тот же поисковик использует несколько разных идентификаторов UA. В том числе и такие, которые никак не отличаются от UA обычных пользователей, таким образом выявляя "клоакинг".

Для справки, вот те роботы, которые "представились по правилам" на одном сайте только за последнюю неделю :)
------------------
StackRambler/2.0 (MSIE incompatible)
Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
Googlebot/2.1 (+http://google.com/bot.html)
msnbot/1.0 (+http://search.msn.com/msnbot.htm)
Yandex/1.01.001 (compatible; Win16; I)
Yandex/1.01.001 (compatible; Win16; M)
TurnitinBot/2.0 http://turnitin.com/robot/crawlerinfo.html
Mediapartners-Google/2.1
Aport
YandexSomehing/1.0
Yandex/1.03.000 (compatible; Win16; M)
Mozilla/4.0 compatible ZyBorg/1.0 Dead Link Checker ([email protected]; http://WISEnutbot.com)
PlantyNet_WebRobot_V1.9 [email protected] 2 0.02
Mozilla/5.0 (compatible; Googlebot/2.1; +http://google.com/bot.html)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; Girafabot; girafabot at girafa dot com; http://girafa.com)
Yandex/1.01.001 (compatible; Win16; H) 1 0.01
Mozilla/4.0 (MobilePhone SCP-5500/US/1.0) NetFront/3.0 MMP/2.0 (compatible; Googlebot/2.1; +http://google.com/bot.html)
 

winkel

Guest
Vasya, в твоем списке по крайней-мере в каждой строчке содержится название поисковака. Т.е. можно проверить ereg'ом ;-)
 

Vasya

Guest
winkel, так и есть. Так их и определяю. :)
Но, есть ещё запросы с тех же IP (или подсеток), без реферероф, которые идут по тем же урлам, и UA у них типа "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
 

winkel

Guest
Но, есть ещё запросы с тех же IP (или подсеток), без реферероф, которые идут по тем же урлам, и UA у них типа "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
Вот это плохо... так что, получается нет универсального способа определить кто зашел: паук или человек?
 

Фанат

oncle terrible
Команда форума
КОНЕЧНО ЖЕ, НЕТ
по-твоему, пауки ходят по какому-то особому протоколу?
Паук - это точно такой же посетитель твоего сайта.

А зачем тебе такая точность? У тебя по рублю платят за каждый заход паука или что? Ну не определишь ты 5% пауков - что от этого изменится?
у тебя статистика обеспечивает 100% точность, да? Одна проблема осталась с поисковиками?

Не надо себе проблемы из пальца высасывать. Лучше матчасть учите. оно гораздо полезнее
 
Сверху