Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Можно ли спросить методом POST, а получит обратно GET?
Новая тема
Ответить
цитата
13/04/10 в 17:53
kit
Хочу на странице
http://www.site.com/
в поисковой форме сделать запрос методом POST, но так, что-бы поведение было такое, как при запросе методом GET, и в итоге пользователь попадает на страницу
http://www.site.com/
?q=keyword
Сервер должен получить запрос методом POST, а отдать методом GET
цитата
13/04/10 в 18:07
Dr.Syshalt
Редирект после POST. Ну, возвращаешь 302 в качестве ответа на POST, с location, и все.
цитата
13/04/10 в 18:19
kit
Мне нужно в один запрос это сделать.
цитата
13/04/10 в 18:23
leroy_17
так это и будет 1 запрос фактически , после того как скрипт отработает , ему можно Location выдать с линком
http://www.site.com/?q=keyword
.
цитата
13/04/10 в 18:35
leroy_17
можно конечно сразу в action формы прописать строку с запросом, но тогда тот скрипт (http://www.site.com/?q=keyword ) и должен обрабатывать этот POST запрос.
Код:
<form action="http://www.site.com/?q=keyword" method="post"> </form>
цитата
13/04/10 в 18:48
lega_cobra
kit писал:
а отдать методом GET
В первый раз слышу, что у отдаваемой страницы есть метод.
цитата
13/04/10 в 19:06
Evgen-X
дык и GET и POST это методы запроса
кажется понял что нужно, здесь это называется "POST может "симулировать" GET запрос"
http://webpeppers.ru/46.html
цитата
13/04/10 в 19:18
Evgen-X
Код:
<form action="http://localhost/test.php?q=keyword" enctype="application/x-www-form-urlencoded" method="post">
<input name="q" size="26" type="text" />
<input type="submit" value="TEST" />
</form>
<?php
echo $_POST["q"];
?>
ну и соотвественно можно проверять, если в $_POST["q"] пусто, то брать из $_GET["q"]
цитата
13/04/10 в 19:35
leroy_17
Цитата:
ну и соотвественно можно проверять, если в $_POST["q"] пусто, то брать из $_GET["q"]
для этого есть $_REQUEST, не надо ниче там проверять
цитата
13/04/10 в 19:40
Pentarh
leroy_17 писал:
можно конечно сразу в action формы прописать строку с запросом, но тогда тот скрипт (http://www.site.com/?q=keyword ) и должен обрабатывать этот POST запрос.
Код:
<form action="http://www.site.com/?q=keyword" method="post"> </form>
+1
цитата
13/04/10 в 22:47
kit
Пасибо за идеи ребята!
цитата
13/04/10 в 23:39
remorhaz
leroy_17
прав, редирект после POST решит проблему. То есть в результате отправки формы пользователь окажется на странице, которая не будет требовать при рефреше заново отправить данные формы.
цитата
13/04/10 в 23:57
lega_cobra
remorhaz писал:
leroy_17
прав, редирект после POST решит проблему. То есть в результате отправки формы пользователь окажется на странице, которая не будет требовать при рефреше заново отправить данные формы.
Все зависит от цели. Если бы кит сказал, что он хочет получить, а не "как сделать что-то, что не скажу" - тогда было бы ясно. Что бы после поста получить страницу без повторного запроса, надо делать редирект. Если просто хочется параметров в URL - то надо просто делать полный URL в action.
PS Иногда такой редирект раздражает, так-как нельзя вернуться на предыдущую страницу кнопкой back...
цитата
13/04/10 в 23:59
arachnO
редирект, да
а в самом скрипте
Код:
$query = (isset ($_GET ['q']) ? $_GET ['q'] : (isset ($_POST ['q']) ? $_POST ['q'] : ''));
цитата
14/04/10 в 01:23
remorhaz
arachnO писал:
а в самом скрипте
Код:
$query = $_REQUEST['q'];
цитата
14/04/10 в 01:25
remorhaz
Но в данном случае использовать $_REQUEST не нужно - поскольку запрос формы POST, то и в скрипте достаточно лазить в $_POST.
цитата
14/04/10 в 01:46
arachnO
remorhaz
1. $_REQUEST у меня например нахуй запрещен
2. в данном случае может параметр придти как из $_GET так и из $_POST
поэтому не надо ляля
цитата
14/04/10 в 01:48
remorhaz
arachnO писал:
1. $_REQUEST у меня например нахуй запрещен
На кой чёрт?
arachnO писал:
2. в данном случае может параметр придти как из $_GET так и из $_POST
поэтому не надо ляля
Не может. Если форма POST - то и параметр строго в POST. Можно даже убивать скрипт при отличном от POST запросе - все будет работать.
цитата
14/04/10 в 04:37
lega_cobra
remorhaz писал:
Не может. Если форма POST - то и параметр строго в POST. Можно даже убивать скрипт при отличном от POST запросе - все будет работать.
Код:
<FORM ACTION="kuku.cgi?q=one" METHOD=POST>
<INPUT TYPE="hidden" NAME="q" VALUE="two">
<INPUT TYPE="submit" VALUSE="wierd!!!">
</FORM>
цитата
14/04/10 в 04:43
Noobus Boobus
Регулярно делаю что-то вида:
Код:
<form action="<?=$_SERVER['PHP_SELF']?>?act=update" method="POST">
<input type="text" name="name"><input type=submit>
</form>
Потом очень удобно разбирать формы по $_GET['act'], а параметры брать из $_POST.
По той же причине не использую $_REQUEST - надо все-таки знать, откуда что пришло.
цитата
20/04/10 в 13:42
idk2045
самая жесть это переделывать чей-то код зависящий от GET и POST...
первым делом приходится делать глобальную замену на REQUEST
а такое нужно когда меняются требования к скрипту и надо метод поменять в нескольких формах например.
Код:
<FORM ACTION="kuku.cgi?q=one" METHOD=POST>
<INPUT TYPE="hidden" NAME="q" VALUE="two">
<INPUT TYPE="submit" VALUSE="wierd!!!">
</FORM>
неужели имен мало?? ведь могут быть еще и куки.
цитата
20/04/10 в 14:22
lega_cobra
grozny писал:
самая жесть это переделывать чей-то код зависящий от GET и POST...
Не все пишут на PHP, используя стандартные инструменты.
Цитата:
неужели имен мало?? ведь могут быть еще и куки.
Мне хватает. Вопрос был в возможности одновременной передачи параметров. Ответ - возможно и лёгко. Просто иногда проще написать кусочек кода, чем "многа слов"
цитата
20/04/10 в 14:44
remorhaz
lega_cobra писал:
Код:
<FORM ACTION="kuku.cgi?q=one" METHOD=POST>
<INPUT TYPE="hidden" NAME="q" VALUE="two">
<INPUT TYPE="submit" VALUSE="wierd!!!">
</FORM>
Эта форма отправит POST-запрос. Да, действительно, q при этом окажется и в $_GET, и в $_POST, но вообще-то программисту за такой бардак нужно отпиливать яйца ржавой ножовкой. Тогда и не будет проблем, откуда брать параметр - все будут четко знать, что, скажем, q1 передается через URL, а q2 - через форму.
цитата
20/04/10 в 15:34
Sterx
Код:
import_request_variables('GP', 'request_');
тоже вариант
цитата
20/04/10 в 20:53
DF™
Не совсем понятна задача и для чего она применяется, но насколько я понял задачу могу предложить два варианта решения, не привязанных к PHP или другому языку
1 вариант - на JavaScript при нажатии на submit-кпонку формировать строку <FORM ACTION="kuku.cgi?q=one" ...>, данные POST будут дублироваться в GET-запросе.
2 вариант - делать промежуточный скрипт, который будет перехватывать запрос (например с помощью mod_rewrite), считывать формы из POST запроса и переписывать переменные окружения под GET запрос , а после вызывать скрипт который будет считать что его вызвали методом GET.
Стр.
1
,
2
>
последняя »
Новая тема
Ответить
Эта страница в полной версии