Как сделть так, чтобы идентификатор сессии не добовлялся к URL страницы.

Гриша К.

Новичок
Как сделть так, чтобы идентификатор сессии не добовлялся к URL страницы.

У меня на хостинге установлены две настройки в php.ini:
session.use_cookies = 1
session.use_trans_sid = 1

Поэтому, когда пользователь заходит на страницы сайта, то сначала к каждой ссылке дописывается идедификатор сессии, т.е. /index.php?PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8f
.
Поэтому нажава на любую ссылку, открывается новая страница сайта, адрес которой, в строке броузера выглядит pages1.php?PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8f.

Так как я использую такую конструкцию, для отображения меню:
<? if ($_SERVER['REQUEST_URI']=='/pages1.php'): ?>
<a href="/index.php" id="selected">ГЛАВНАЯ</a>
<? else:?>
<a href="/index.php" id="inert">ГЛАВНАЯ</a>
<? endif?>
</p>

то когда к адресу страницы добавляется идентификатор сессии, то меню отображается неверно.

Подскажите пожалуйста, как можно сделать так, чтобы идентификатор сессии не отображался в строке броузера!.

Статьи по сессиям я читал, ответа на свой вопрос не нашел.
 

alpine

Новичок
Гриша К.
Если не запрещено веб сервером и у тебя не IIS пропиши в

.htaccess

Код:
php_value session.use_trans_sid 0
подробней:
http://www.php.net/manual/ru/configuration.changes.php

иначе пинай хостеров(или самого себя, в следующий раз пиши свою конфу :) ).
 

Kelkos

Сам себе программер
Ну или в самом начале скрипта:
ini_set("session.use_trans_sid", 0);
ini_set("session.use_cookies", 1);

Но по правде говоря не стоит стартовать сессии постоянно.. они тебе прямо так нужны ну прямо всегда?
 

Гриша К.

Новичок
alpine и Kelkos спасибо большое за ответы.
Скажите пожалуйста, а если в броузере у пользователя cookies отключено, то при session.use_trans_sid", 0, сесси работать будут.

Да сессии мне на данный момент нужны только в корзине для покупок, но когда пользователь находясь в корзине для покупок, выбирает пункт меню, то страница открывется с идентификатором сессии (один раз), и меню отображается не верно, а этого нельзя допускать.
 

SelenIT

IT-лунатик :)
Гриша К., а как насчет небольшого изменения скрипта, чтобы не зависеть от SID'а в URL'е?
Например:
PHP:
<?
if (strpos($_SERVER['REQUEST_URI'],'/pages1.php')!==false): ?>
<a href="/index.php" id="selected">ГЛАВНАЯ</a>
<? else:?>
<a href="/index.php" id="inert">ГЛАВНАЯ</a>
<? endif?>
</p>
 

Гриша К.

Новичок
SelenIT спасибо большое, вариант очень хороший.

А еще один вопрос остался, пользователь сам может ввести идентификатор сесси в строке броузера и перезагрузить страницу с новым PHPSESSID (он поменяет настоящий на поддельный), т.ь. подделать.

И все таки, сессии будут работать, если в броузере отключен cookie, а session.use_trans_sid", 0.
 

SelenIT

IT-лунатик :)
пользователь сам может ввести идентификатор сесси ... т.ь. подделать
Может. Но что это ему даст практически?

сессии будут работать, если в броузере отключен cookie, а session.use_trans_sid", 0
Будут... только если дописывать SID к URL'ам руками :). Иначе, AFAIK, никак.
 

Гриша К.

Новичок
SelenIT, спасибо большое за ответ, за помощь.
Тогда, безопасней использовать другой код моего меню, как раз такой который написали вы.

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

alpine

Новичок
Автор оригинала: Kelkos
Ну или в самом начале скрипта:
ini_set("session.use_trans_sid", 0);
ini_set("session.use_cookies", 1);

Но по правде говоря не стоит стартовать сессии постоянно.. они тебе прямо так нужны ну прямо всегда?
Если я не ошибаюсь, твой вариант не будет работать, ибо:

session.use_trans_sid PHP_INI_ALL in PHP <= 4.2.3. PHP_INI_PERDIR in PHP < 5. Available since PHP 4.0.3.

http://php.paco.net/manual/en/ini.php#ini.list
 

valdisss

Guest
Всё гораздо проще:
Создай допустим файл constant.php, в котором указано следующее:
$hyperlink="http://www.site.ru/";
А потом к каждой странице добавь require("constant.php");
Тем самым определишь Гиперссылку. А когда будешь прописывать путь к чему либо, допустим к странице сайта сделаешь вот такую конструкцию:
<a href="<? echo $hyperlink; ?>stranica.php">Новая страница</a>
В результате получишь следующий результат:
<a href="www.site.ru/stranica.php">Новая страница</a>
После этого гарантировано PHPSESSID появляться не будет, проверено!!!
 
Сверху