Forum Webscript.Ru

Программирование => PHP => Тема начата: dub от 20 Января 2004, 11:16:58

Название: ?Visitor=... - что за хвост?
Отправлено: dub от 20 Января 2004, 11:16:58
На сервере хостера выложил php-скрипт. При ПЕРВОЙ загрузке страницы (когда страница еще не в кеше или типа того), ко всем относительным ссылкам непонятно с какой стати добавляется хвост ?Visitor=...

Пример: ссылка вида
< a href=/missruss/home >home< / a >
заменяется на
< a href=/missruss/home?Visitor=4f477b79e069ec50c625ef66ed6a79fb >home< / a >

Скрипт использует mod_rewrite, хотя я и не уверен, что это как-то относится к проблеме. Важно то, что mod_rewrite используется для ЧПУ, а значит нельзя такому скрипту просто взять и передать какую-то лишнюю GET-переменную. Такая ссылка просто перестает работать.

Повторю, что эта переменная добавляется только первый раз. То есть для того, чтобы отследить эту проблему, надо:
1) закрыть браузер
2) открыть браузер
3) загрузить страницу
Если же эту страницу Обновить, то хвост ?Visitor=... больше не появляется.

Хостер съезжает на ошибку в скрипте, но скрипт я писал сам, нет там ничего подобного. С чем это может быть связано? Apache? mod_rewrite? Обработчик PHP?

Заранее спасибо.
Название: ?Visitor=... - что за хвост?
Отправлено: CGVictor от 20 Января 2004, 11:42:55
Visitor...
Похоже на сессии
Название: ?Visitor=... - что за хвост?
Отправлено: Diesel от 20 Января 2004, 11:46:31
Это ID сессии. в php.ini включен параметр session.use_trans_sid. не обращай внимания. Так и должно быть.
Название: ?Visitor=... - что за хвост?
Отправлено: dub от 20 Января 2004, 11:48:05
Цитировать
CGVictor:
Похоже на сессии

А подробнее? Сессии я использую тоже. Но на локальном хосте у меня проблем с относительными ссылками от этого не возникало. Если проблема с настройками сессии, то где - в скрипте или в php.ini у хостера?
Название: ?Visitor=... - что за хвост?
Отправлено: CGVictor от 20 Января 2004, 11:53:32
Лучше у него и спросить... Мне кажется, у него стоит session_autostart с переменной visitor.
Название: ?Visitor=... - что за хвост?
Отправлено: dub от 20 Января 2004, 11:54:05
Цитировать
Diesel:
в php.ini включен параметр session.use_trans_sid

Так-с, это уже похоже на правду. Но проблема в том, что мои относительные ссылки с этим хвостом не работает, потому как обрабатываются они скриптом index.php, на который перекидываются mod_rewritом. Короче, ссылки должны сохранять точный внешний вид для правильной обработки и лишние GET-переменные все сильно портят.
Вопрос: как этот параметр отключить?
Название: ?Visitor=... - что за хвост?
Отправлено: AliMamed от 20 Января 2004, 12:25:35
в php.ini или в .htaccess
Название: ?Visitor=... - что за хвост?
Отправлено: dub от 20 Января 2004, 12:35:48
Или
ini_set() (http://www.php.net/manual/ru/function.ini-set.php) ?
Для начала попробую уломать хостера выключить параметр в php.ini. По дефолту он "0". Плюс - Security Level и все такое.
AliMamed
Как это сделать в .htaccess пока не знаю. Буду искать инфу, если есть ссылка под рукой - кинь plz.
Название: ?Visitor=... - что за хвост?
Отправлено: Diesel от 20 Января 2004, 12:45:08
dub Это не в коем случае не нужно отключать. Иначе у тебя не будут работать сесси, если отключены куки. я с mod_rewrite не работал, помочь не могу, но уверен что эта проблема должна решаться не выключением параметра.
Название: ?Visitor=... - что за хвост?
Отправлено: dub от 20 Января 2004, 12:55:07
AliMamed
Судя по всему, имелось в виду следующее:

To disable register_globals you have to set:
php_value register_globals 0

В моем случае
php_value session.use_trans_sid 0

php_value.. Точно. Запамятовал. Спасибо.

Diesel
http://www.php.net/manual/en/ref.session.php#ini.session.use-trans-sid

session.use_trans_sid boolean

session.use_trans_sid whether transparent sid support is enabled or not. Defaults to 0 (disabled).

Note: For PHP 4.1.2 or less, it is enabled by compiling with --enable-trans-sid. From PHP 4.2.0, trans-sid feature is always compiled.

URL based session management has additional security risks compared to cookie based session management. Users may send an URL that contains an active session ID to their friends by email or users may save an URL that contains a session ID to their bookmarks and access your site with the same session ID always, for example.

В свете вышеизложенного мне не особо-то и надо, чтобы сессии работали с отключенными кукисами. Если чел логинится на мой сайт, значит ему туда надо. Если ему туда надо - пусть разрешит куки. Мой куки подписан.
Название: ?Visitor=... - что за хвост?
Отправлено: AliMamed от 20 Января 2004, 13:09:02
именно эту переменную через ini_set изменять нельзя. про php_value - правильно
Название: ?Visitor=... - что за хвост?
Отправлено: dub от 20 Января 2004, 13:15:06
Цитировать
AliMamed:
именно эту переменную через ini_set изменять нельзя

Ага. Точно.

session.use_trans_sid "0" PHP_INI_SYSTEM|PHP_INI_PERDIR

PHP_INI_PERDIR 2 Entry can be set in php.ini, .htaccess or httpd.conf  
PHP_INI_SYSTEM 4 Entry can be set in php.ini or httpd.conf  

С помощью .htaccess палучылас. Спасибо еще раз.
Название: ?Visitor=... - что за хвост?
Отправлено: Diesel от 20 Января 2004, 13:30:59
dub Если чел заботится о том чтоб никто под его аккаунтом не зашел, пусть жмет "выход", когда уходит. Для того что бы убить сессию есть session_destroy(); Отключать куки это параноя, но гоаорить "Пусть включает куки если хочет на " мой сайт, это все равно что "Пусть ставит IE чтоб смотреть мою страничку"
Название: ?Visitor=... - что за хвост?
Отправлено: dub от 20 Января 2004, 13:58:43
Diesel
Развитие темы рискует перерасти во флейм.
Название: ?Visitor=... - что за хвост?
Отправлено: Меняздесьдавнонет от 20 Января 2004, 14:25:43
Цитировать
dub:
Важно то, что mod_rewrite используется для ЧПУ, а значит нельзя такому скрипту просто взять и передать какую-то лишнюю GET-переменную.

Это если мод-реврайт без ума использовать.

Цитировать
dub:
Развитие темы рискует перерасти во флейм.

Да, грозит. Если автор вопроса не понимает, что такое сессии, и зачем они ему.

похоже, что товарисч счетчичек решил с помощью сессий завести.

В жизни, человека, который кувалдой сапожный гвоздик забивает в детский сандалик, как на идиота посмотрят. А в пхп все можно - божья роса!
Название: ?Visitor=... - что за хвост?
Отправлено: dub от 20 Января 2004, 15:16:43
RomikChef
М-да. Даешь. Не ожидал я подобной агрессии, да и сути наезда, честно говоря, не понял. Ладно, по существу твоих заявлений, придется парировать, деваться некуда.

Цитировать
RomikChef:
Это если мод-реврайт без ума использовать.

mod_rewrite использую с умом. Для ЧПУ, как сказано выше. mod_rewrite передает любой запрос на обработку скрипту index.php. index.php обрабатывает $_SERVER[\'REQUEST_URI\'] по собственной логике, в соответствии с содержанием БД, в которой прописаны разделы и подразделы. $_SERVER[\'REQUEST_URI\'] разбивается на составляющие разделителем "/". Я мог бы конечно отсекать от последней составляющей все символы, начиная с "?", но с какой, собственно, стати? В некоторых подразделах, кроме прочего, использоваие символов "?", "=", "&" тоже предусмотрено, таким образом, в частности передаются переменные для поиска. Главная мысль вот в чем: если я устанавливаю ссылку как "/dir/subdir", то хочу, чтоб она выглядела именно так.

Цитировать
RomikChef:
Да, грозит. Если автор вопроса не понимает, что такое сессии, и зачем они ему.

похоже, что товарисч счетчичек решил с помощью сессий завести.

Зачем мне сесии я знаю точно. Они мне для аутентификации. Счетчик ни при чем. И сандалик тоже. В данном контексте считаю правильным успользование кукисов.

Если я не прав в чем - конструктивная критика приветствуется. А просто желчью брызгать - ИМХО неконструктивно.
Название: ?Visitor=... - что за хвост?
Отправлено: dub от 21 Января 2004, 08:37:46
AliMamed
Папинька согласился :)
Цитировать
Hello,

   We have reset it to the default value.

Thank you.
Название: ?Visitor=... - что за хвост?
Отправлено: Меняздесьдавнонет от 21 Января 2004, 12:56:22
если ты делал это осмысленно - то бог с тобой.

Я объясню, почему я решил, что используется это для счетчика.
просто дело в том, что РНР - язык самодокументируемый.
поэтому принято, что имя переменной отражает ее содержание.
Если идентификатор сессии передается переменной с аббривеатурой слов "идентификатор сессии РНР", то сразу ясно - что в переменной идентиикатор сессии.
А если передается слово "посетитель" - то весьма резонно предположить, что передается идентификатор посетителя.

А именно тольо в счетчиках единственной осмысленной информацией в ид сессии будет как раз идентификатор уникального посетителя.

Только не говори мне, что пхпсессид на визитор заменил хостер тоже.
В этом случае я выражу тебе и твоему сайту глубокие и искренние соболезнования.
Название: ?Visitor=... - что за хвост?
Отправлено: dub от 23 Января 2004, 15:16:32
Цитировать
RomikChef:
Только не говори мне, что пхпсессид на визитор заменил хостер тоже.
В этом случае я выражу тебе и твоему сайту глубокие и искренние соболезнования.


Секунду.
Название: ?Visitor=... - что за хвост?
Отправлено: dub от 23 Января 2004, 15:29:04
RomikChef
Блин, сам себя запутал. PHPSESSID на Visitor сам же и заменил. Сделал это с самого начала, давно уже, когда сессию для режима залогиненного посетителя делал (еще режим админа есть). Чтоб, типа, пользователи куков не пугались. И сам об этом забыл напрочь. И поэтому когда этот самый PHPSESSID появился в качестве GET-переменной под именем Visitor, благополучно его не узнал. Даже о сессиях не подумал сразу. И морочу всем голову. Правда про trans_sid я все равно не знал, спрашивать было о чем, но формулировка по моей вине получилась уж больно замороченная.
Название: ?Visitor=... - что за хвост?
Отправлено: CGVictor от 23 Января 2004, 16:03:52
Цитировать
CGVictor:
Мне кажется, у него стоит session_autostart с переменной visitor

Сразу посмотреть, конечно, было сложнее. Вот что бывает, когда люди пишут только для того, чтобы что-нибудь написать.
Название: ?Visitor=... - что за хвост?
Отправлено: dub от 23 Января 2004, 16:14:58
CGVictor
Меня в твоем ответе как раз session_autostart и сбил. Для установки имени я использовал session_name(). session_autostart я не использовал.
Название: ?Visitor=... - что за хвост?
Отправлено: CGVictor от 23 Января 2004, 16:32:42
Цитировать
dub:
И морочу всем голову

Теперь все ОК?
Название: ?Visitor=... - что за хвост?
Отправлено: dub от 23 Января 2004, 16:47:12
CGVictor
 
:) Блин, ну ты злой. Ну согласился же уже, ошибочка вышла. Кода много написано было, этот участок писался давно. Да и годы уже не те, всего не упомнишь. Ну случайно, ну шутя... сбился с верного путя. А тут налетели вороны, заклевали дедушку-склеротика.

Да, теперь все ОК. Всем спасибо.