Показать полную графическую версию : [HTML Forms]Формы и метод GET
vadimiron
23-11-2006, 14:45
возможно это давно всем известно, но я первый раз с этим сталкиваюсь:
Если в форме используем метод GET для передачи данных, то параметры GET URL-a скрипта-получателя (то есть то, что в action стоит) просто стераются
Пример:
<form action='script.php?modus=save_message' method='GET'>
<input name='var1'>
</form>
Так вот скрипт script.php получит $var1, но вот $modus уже не получит
С POST всё в порядке.
Я не понимаю логику за этим: нельзя дальнейшии GET переменные на URL навешeвать?
Или может браузер глупый (IE7)
Или я чего то не понимаю.....
vadimiron
а зачем так сложно?
почему нельзя использовать просто hidden-поля?
У меня этот метод работал. Может стоит попробовать принять переменную как $_GET['modus'] ?
vadimiron
23-11-2006, 19:33
Coutty
Я так и принимаю и никак по другому
XCodeR
Приходиться так и делать, я просто хочу понять логику, что мешает браузеру в запрос просто навесить дополнительные переменные
Почему я так делаю: у приложения модульная структура, то есть переменная $modus отвечает за то, какой скрипт загрузиться
Чтобы не прописывать всё время руками УРЛ с соответствующим модулем я в управляющем скрипте создаю константу MAIN_URL и применяю её везде
Кстати такой же эффект, если я ничего в action не напишу
При ПОСТе переменные передаются, при ГЕТе нет
Prisoner
24-11-2006, 20:18
vadimiron, а в иных броузерах нормально все?
Кстати, может поглядеть в иные суперглобалы, вроде _REQUEST?
vadimiron
24-11-2006, 23:37
Prisoner
в FireFox тоже не работает. REQUEST тоже нет - это же всего соединение двух массивов
Код для проверки:
echo "<form action='test.php?var_get=lala' method='GET'>";
echo "<input name=var_post>";
echo "</form>";
echo "<br><br>";
if(!empty($_POST) || !empty($_GET))
{
echo "<pre>";
echo "POST: ";print_r($_POST);
echo "GET: ";print_r($_GET);
echo "REQUEST: ";print_r($_REQUEST);
}
Может что то связанное с безопастностью..... :wacko:
Prisoner
25-11-2006, 00:01
vadimiron, объединение, верно, однако самому проверить так ли это в этой ситуации (привычка верить во всякие глупости :)) в тот момент у меня не было возможности, потому и спросил. Ну да ладно. У меня тоже не работает :). Сейчас проверил во всех броузерах что под рукой были - одно поведение: удаление переменной из action. Остается только объяснить это поведение и смириться, задействовав hidden поля. Объяснение же может быть следующим (лень копать соответствующие RFC) т.к. метод у нас GET, то ПА генерирует состояние формы в тот же поток где у нас стоит наше "modus=save_message" затирая все то, что там было до нас. POST же так не поступает посколько состояние формы идет иным потоком. Как итог - юзать hidden поля и мириться с двойными (_GET и _POST, из action и hidden полей, соответственно) переменными.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.