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


В первый раз слышу, что у отдаваемой страницы есть метод. icon_smile.gif
цитата
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'];

icon_mrgreen.gif
цитата
14/04/10 в 01:25
 remorhaz
Но в данном случае использовать $_REQUEST не нужно - поскольку запрос формы POST, то и в скрипте достаточно лазить в $_POST.
цитата
14/04/10 в 01:46
 arachnO
remorhaz

1. $_REQUEST у меня например нахуй запрещен
2. в данном случае может параметр придти как из $_GET так и из $_POST
поэтому не надо ляля icon_smile.gif
цитата
14/04/10 в 01:48
 remorhaz
arachnO писал:

1. $_REQUEST у меня например нахуй запрещен


На кой чёрт?

arachnO писал:

2. в данном случае может параметр придти как из $_GET так и из $_POST
поэтому не надо ляля icon_smile.gif


Не может. Если форма 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, используя стандартные инструменты. icon_smile.gif

Цитата:
неужели имен мало?? ведь могут быть еще и куки.


Мне хватает. Вопрос был в возможности одновременной передачи параметров. Ответ - возможно и лёгко. Просто иногда проще написать кусочек кода, чем "многа слов" icon_smile.gif
цитата
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  >  последняя »


Эта страница в полной версии