Сессии влияют на $_REQUEST?

Эдди

Новичок
Сессии влияют на $_REQUEST?

Везде читаю, что переменная $_REQUEST относится к пост, гет и куки.
Но если у меня установленна переменная $_SESSION и такая же $_GET, то echo $_REQUEST['var'] выводит $_SESSION.
Я отстал от жизни?..
globals=on = в этом дело?

Не пинайте новичка...
 

DiMA

php.spb.ru
Команда форума
1. нет, но в соседней переменной, которая влияет на приоритет для одинаковых переменных в Request между разными суперглобальными массивами

2. ты не должен хотеть изменить это поведение

3. и не называй переменные одинаково
 

Фанат

oncle terrible
Команда форума
echo $_REQUEST['var'] выводит слово "$_SESSION"?

еще раз и более внятно. что у тебя куда выводит.

если у тебя переенная есть в адресной строке, то почему ты удивляешься, что она есть в $_REQUEST и при чем здесь сессии?
 

Эдди

Новичок
Автор оригинала: *****
echo $_REQUEST['var'] выводит слово "$_SESSION"?

еще раз и более внятно. что у тебя куда выводит.

если у тебя переенная есть в адресной строке, то почему ты удивляешься, что она есть в $_REQUEST и при чем здесь сессии?
У меня есть постоянно переменная $_SESSION['VAR'] (=0)
При передаче через адресную строку переменной VAR (=1) пишу:
echo $_REQUEST['var'] - получаю 0

Что удивило. С разных компьютеров получаю разный результат.
Компьютеры различаются только операционной системой (Vista и XP). Но это ведь не влияет...

globals у хостера on
 

dimagolov

Новичок
Кстати, а в чем вообще смысл обработки $_REQUEST? Зачем заказывать в ресторане 5 блюд, потом сваливать все в один тазик, перемешивать и есть то, что получилось?
 

Эдди

Новичок
Автор оригинала: dimagolov
Кстати, а в чем вообще смысл обработки $_REQUEST? Зачем заказывать в ресторане 5 блюд, потом сваливать все в один тазик, перемешивать и есть то, что получилось?
В переменной сессии city_id. Город, где услуга предоставляется. ($_SESSION)
НА всех страницах выводится только те услуги, которые к этому городу относятся.
Есть страница, где представлены все аккредитованные фирмы в любом городе.
Не покидая город, где вы находитесь, надо показать, где есть фирмы с выборкой по городам ($_GET), "не покидая" основной город.
Вот и все.
Сумбурно немного.
 

dimagolov

Новичок
Эдди, этот поток сознания каким образом к моему вопросу относится? Мне все равно что и как ты там делашь. Вопрос был про то, какой смысл обращаться к $_REQUEST, когда можно обращаться непосредственно к $_GET или к $_COOKIE.

п.с. к твоей проблеме прямо относится ТОЛЬКО globals=on.

п.п.с. а проблема твоя это хрестоматийный пример на тему "почему включенные глобалсы это зло"
 

Эдди

Новичок
Автор оригинала: dimagolov
Эдди, этот поток сознания каким образом к моему вопросу относится? Мне все равно что и как ты там делашь. Вопрос был про то, какой смысл обращаться к $_REQUEST, когда можно обращаться непосредственно к $_GET или к $_COOKIE.

п.с. к твоей проблеме прямо относится ТОЛЬКО globals=on.

п.п.с. а проблема твоя это хрестоматийный пример на тему "почему включенные глобалсы это зло"
Да понятно оно. Так и пришлось сделать.
Насчет globals off придется заказать виртуальный выделенный сервер. Там и буду командовать.
 

Фанат

oncle terrible
Команда форума
божечки мои.
а переназвать переменную VAR по-другому, SVAR к примеру - это сложнее, чем новый сервер взять?
 

Эдди

Новичок
Автор оригинала: *****
божечки мои.
а переназвать переменную VAR по-другому, SVAR к примеру - это сложнее, чем новый сервер взять?
Ну давай тогда все переназывать.
Я был уверен, что сессии туда не вмешиваются. Теперь буду решать, переназвать или сервер брать.
 

Beavis

Banned
если кто-то понял проблему, объясните плз причем тут вообще сессия?
 

Фанат

oncle terrible
Команда форума
а мне тоже, кстати, казалось, что в реквест не вмешиваются
 

Эдди

Новичок
Мне тоже казалось. А вмешивается, сволочь.
Проверьте на globals on

Видимость такая, что при глобалс он пхп считает, что $var= что $request['var'], что $session['var'], как $var
 

dimagolov

Новичок
$_REQUEST это globals ON в миниатюре, только состоящий из $_GET, $_POST and $_COOKIE. ИМХО как и globals ON зло и ненужный костыль для обратной совместимости.

если globals ON, то содержимое как $_REQUEST, так и $_SESSION мапиться в глобальные переменные. очевидно, что при совпадении имен значение окажется идентичным, что в $GLOBALS, что в $_REQUEST, что в $_SESSION. так же очевидно, что порядок установки значения зависит от реализации и документацией не определен. такой себе вариант отстрелить себе ногу в стиле PHP.
 

Эдди

Новичок
Автор оригинала: dimagolov
$_REQUEST это globals ON в миниатюре, только состоящий из $_GET, $_POST and $_COOKIE. ИМХО как и globals ON зло и ненужный костыль для обратной совместимости.

если globals ON, то содержимое как $_REQUEST, так и $_SESSION мапиться в глобальные переменные. очевидно, что при совпадении имен значение окажется идентичным, что в $GLOBALS, что в $_REQUEST, что в $_SESSION. так же очевидно, что порядок установки значения зависит от реализации и документацией не определен. такой себе вариант отстрелить себе ногу в стиле PHP.
Все правильно. Только я полагал, что если уточняешь, что $_REQUEST, то он не должен быть равен $_SESSION.
Ну в общем, не наступаем не эти грабли и все...

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

dimagolov

Новичок
Либо надо в спецификации сказать, что если on, то туда попадают все названия переменных. Даже из сессий.
кончай бредить. сделай
PHP:
$_SESSION['var_name_not_in_request']=1;
$_SESSION['var_name_is_in_request']=2;
var_dump($_REQUEST);
и убедись, что ничего в $_REQUEST из $_SESSION не попадает. перекрываются только ЗНАЧЕНИЯ одноименных переменных при globals ON
не пытайтесь нежелание думать заменять чтением документации. если не думать во время чтения мана, то его можно и не читать.
 

Эдди

Новичок
Автор оригинала: dimagolov
кончай бредить. сделай
PHP:
$_SESSION['var_name_not_in_request']=1;
$_SESSION['var_name_is_in_request']=2;
var_dump($_REQUEST);
и убедись, что ничего в $_REQUEST из $_SESSION не попадает. перекрываются только ЗНАЧЕНИЯ одноименных переменных при globals ON
не пытайтесь нежелание думать заменять чтением документации. если не думать во время чтения мана, то его можно и не читать.
Сделай так, включив глобалсы:
//дано
$_GET['var']='тупой'
Предварительно забей в сессию:
$_SESSION['var']='умный'

Потом выведи echo $var.

Что получишь? Сообщи, пожалуйста...

Глобалсы!!! ОН

В принципе, вопрос решен.
Большое всем спасибо.
 
Сверху