почему REQUEST не содержит GET

alexblade

Новичок
<?php

$_GET['foo'] = 'a';
$_POST['bar'] = 'b';
var_dump($_GET); // Element 'foo' is string(1) "a"
var_dump($_POST); // Element 'bar' is string(1) "b"
var_dump($_REQUEST); // Does not contain elements 'foo' or 'bar'

?>

до этого примера, когда знаю что переменная может прийти или гетом или постом использовал реквест.
в этом же примере реквест ничего не даёт , почему ?
 

WMix

герр M:)ller
Партнер клуба
слышал звон, не знаю где он?
$_REQUEST создастся сам если отправишь почту bar=b на ?foo=a
 

WMix

герр M:)ller
Партнер клуба
а причем тут $_REQUEST
PHP:
$_GET['foo'] = 'a';
$_POST['bar'] = 'b';
 

WMix

герр M:)ller
Партнер клуба
вот жешь глупец!
PHP:
$a = 1;
$b = 3;
вопрос, почему $c пустая?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
alexblade
Глупо ожидать, что твои "манипуляции ручками" отразятся на переменной, которую ты не трогал, да?
 

Lionishy

Новичок
alexblade
$_REQUEST -- глобальная переменная окружения. Она определяется ДО того, как сценарий запущен. Если работа сценария началась, то $_REQUEST УЖЕ определён и заполнен данными. Если данных нет, то он пуст.
Изменение переменной $_GET на $_REQUEST никак не повлияет.

Но, если вы из html формы

PHP:
<form action="hello.php?hello=kitty" method="POST">
    <input type="hidden" name="post_hello" value="post_kitty" />
    <input type="submit" value="Hello Kitty!" />
</form>
взгляните на результат hello.php
PHP:
<?php
var_dump($_GET);
var_dump($_POST);
var_dump($_REQUEST);
Получите ожидаемое.
 

alexblade

Новичок
c0dex да, но реквест же содержит все тоже самое что и гет и пост и кукис , нет ?

например у меня стоит в форме <?=(!empty($_REQUEST['title']) && $_REQUEST['title']=='Offer') ? ' selected="selected"' : ''?>
при этом реквест я не трогаю. а могу передать гетом или постом переменую тайтл и реквест её увидит. чем пример с вопроса отличается ?


ага тем что уже "до"... щяз поэксперементирую и отпишусь


Lionishy, такая картина.. сценарий уже запущен.. в коде имеем

$a=1;

$b = $a +1; //несмотря на то что сценарий уже запущен в этой строчке оброботчик понимает что $a была определена только что на предыдущем шаге и у неё сейчас есть значение.

или реквест не работает по такому принципу и научен заполняться только _после_ завершения скрипта ?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
alexblade
Нет, не содержит. Потому, что ты руками влез, куда лезть не надо.
 

Lionishy

Новичок
alexblade
Попробуйте запустить мой пример. Создайте hello.html и hello.php из примеров. Зайдя на hello.html и отправив форму, получите ожидаемый результат: в $_GET будет определён ключ hello со значением kitty, в $_POST ключ post_hello со значением post_kitty, а в $_REQUEST -- всё сразу.

$_GET, $_POST, $_REQUEST -- глобальные переменные окружения. Они задаются вне сценария. Дальше можно их изменять сколько угодно, но это будет происходить независимо, как с самыми обычными переменными.
 

alexblade

Новичок
Lionishy
да спасибо пример я запускал там все прозрачно. вроде понял т.е получается -
в реквесте мы видим только то что передалось методом ГЕТ или ПОСТ. изменения же гета вручную (без последующей отправки всего измененого) ни как не отразятся на реквесте. а вот если все изменения гета отправить методом гет то реквест их благополучно подхватит.
 

Lionishy

Новичок
alexblade
Вроде бы вы правильно поняли.
Но мне кажется, что у вас существует серьёзный пробел в плане написания приложений. Не только PHP, а вообще.
Ознакомьтесь с темой параметров командной строки и переменных окружения.
 
Сверху