С нами с 18.11.99
Сообщения: 14226
|
Добавлено: 13/04/10 в 17:53 |
Хочу на странице http://www.site.com/ в поисковой форме сделать запрос методом POST, но так, что-бы поведение было такое, как при запросе методом GET, и в итоге пользователь попадает на страницу http://www.site.com/?q=keyword
Сервер должен получить запрос методом POST, а отдать методом GET
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 13/04/10 в 18:07 |
Редирект после POST. Ну, возвращаешь 302 в качестве ответа на POST, с location, и все.
|
|
|
|
С нами с 18.11.99
Сообщения: 14226
|
Добавлено: 13/04/10 в 18:19 |
Мне нужно в один запрос это сделать.
|
|
|
|
С нами с 01.03.07
Сообщения: 304
Рейтинг: 223
|
Добавлено: 13/04/10 в 18:23 |
|
|
|
|
С нами с 01.03.07
Сообщения: 304
Рейтинг: 223
|
Добавлено: 13/04/10 в 18:35 |
можно конечно сразу в action формы прописать строку с запросом, но тогда тот скрипт (http://www.site.com/?q=keyword ) и должен обрабатывать этот POST запрос.
Код: | <form action="http://www.site.com/?q=keyword" method="post"> </form> |
|
|
|
|
С нами с 21.09.03
Сообщения: 7329
Рейтинг: 2144
|
Добавлено: 13/04/10 в 18:48 |
kit писал: | а отдать методом GET |
В первый раз слышу, что у отдаваемой страницы есть метод.
|
|
|
|
[www]
С нами с 14.07.04
Сообщения: 1693
Рейтинг: 872
|
Добавлено: 13/04/10 в 19:06 |
дык и GET и POST это методы запроса
кажется понял что нужно, здесь это называется "POST может "симулировать" GET запрос"
http://webpeppers.ru/46.html
|
|
|
|
[www]
С нами с 14.07.04
Сообщения: 1693
Рейтинг: 872
|
Добавлено: 13/04/10 в 19:18 |
Код: |
<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"]
|
|
|
|
С нами с 01.03.07
Сообщения: 304
Рейтинг: 223
|
Добавлено: 13/04/10 в 19:35 |
Цитата: | ну и соотвественно можно проверять, если в $_POST["q"] пусто, то брать из $_GET["q"] |
для этого есть $_REQUEST, не надо ниче там проверять
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 13/04/10 в 19:40 |
leroy_17 писал: | можно конечно сразу в action формы прописать строку с запросом, но тогда тот скрипт (http://www.site.com/?q=keyword ) и должен обрабатывать этот POST запрос.
Код: | <form action="http://www.site.com/?q=keyword" method="post"> </form> | |
+1
|
|
|
|
С нами с 18.11.99
Сообщения: 14226
|
Добавлено: 13/04/10 в 22:47 |
Пасибо за идеи ребята!
|
|
|
|
С нами с 13.08.08
Сообщения: 1538
Рейтинг: 1011
|
Добавлено: 13/04/10 в 23:39 |
leroy_17 прав, редирект после POST решит проблему. То есть в результате отправки формы пользователь окажется на странице, которая не будет требовать при рефреше заново отправить данные формы.
|
|
|
|
С нами с 21.09.03
Сообщения: 7329
Рейтинг: 2144
|
Добавлено: 13/04/10 в 23:57 |
remorhaz писал: | leroy_17 прав, редирект после POST решит проблему. То есть в результате отправки формы пользователь окажется на странице, которая не будет требовать при рефреше заново отправить данные формы.
|
Все зависит от цели. Если бы кит сказал, что он хочет получить, а не "как сделать что-то, что не скажу" - тогда было бы ясно. Что бы после поста получить страницу без повторного запроса, надо делать редирект. Если просто хочется параметров в URL - то надо просто делать полный URL в action.
PS Иногда такой редирект раздражает, так-как нельзя вернуться на предыдущую страницу кнопкой back...
|
|
|
|
no sign
С нами с 25.07.03
Сообщения: 3623
Рейтинг: 1403
|
Добавлено: 13/04/10 в 23:59 |
редирект, да
а в самом скрипте
Код: |
$query = (isset ($_GET ['q']) ? $_GET ['q'] : (isset ($_POST ['q']) ? $_POST ['q'] : ''));
|
|
|
|
|
С нами с 13.08.08
Сообщения: 1538
Рейтинг: 1011
|
Добавлено: 14/04/10 в 01:23 |
arachnO писал: | а в самом скрипте |
Код: | $query = $_REQUEST['q']; |
|
|
|
|
С нами с 13.08.08
Сообщения: 1538
Рейтинг: 1011
|
Добавлено: 14/04/10 в 01:25 |
Но в данном случае использовать $_REQUEST не нужно - поскольку запрос формы POST, то и в скрипте достаточно лазить в $_POST.
|
|
|
|
no sign
С нами с 25.07.03
Сообщения: 3623
Рейтинг: 1403
|
Добавлено: 14/04/10 в 01:46 |
remorhaz
1. $_REQUEST у меня например нахуй запрещен
2. в данном случае может параметр придти как из $_GET так и из $_POST
поэтому не надо ляля
|
|
|
|
С нами с 13.08.08
Сообщения: 1538
Рейтинг: 1011
|
Добавлено: 14/04/10 в 01:48 |
arachnO писал: |
1. $_REQUEST у меня например нахуй запрещен
|
На кой чёрт?
arachnO писал: |
2. в данном случае может параметр придти как из $_GET так и из $_POST
поэтому не надо ляля |
Не может. Если форма POST - то и параметр строго в POST. Можно даже убивать скрипт при отличном от POST запросе - все будет работать.
|
|
|
|
С нами с 21.09.03
Сообщения: 7329
Рейтинг: 2144
|
Добавлено: 14/04/10 в 04:37 |
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>
|
|
|
|
|
С нами с 16.10.09
Сообщения: 343
Рейтинг: 419
|
Добавлено: 14/04/10 в 04:43 |
Регулярно делаю что-то вида:
Код: | <form action="<?=$_SERVER['PHP_SELF']?>?act=update" method="POST">
<input type="text" name="name"><input type=submit>
</form>
|
Потом очень удобно разбирать формы по $_GET['act'], а параметры брать из $_POST.
По той же причине не использую $_REQUEST - надо все-таки знать, откуда что пришло.
|
|
|
|
С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506
|
Добавлено: 20/04/10 в 13:42 |
самая жесть это переделывать чей-то код зависящий от GET и POST...
первым делом приходится делать глобальную замену на REQUEST
а такое нужно когда меняются требования к скрипту и надо метод поменять в нескольких формах например.
Код: | <FORM ACTION="kuku.cgi?q=one" METHOD=POST>
<INPUT TYPE="hidden" NAME="q" VALUE="two">
<INPUT TYPE="submit" VALUSE="wierd!!!">
</FORM> |
неужели имен мало?? ведь могут быть еще и куки.
|
|
|
|
С нами с 21.09.03
Сообщения: 7329
Рейтинг: 2144
|
Добавлено: 20/04/10 в 14:22 |
grozny писал: | самая жесть это переделывать чей-то код зависящий от GET и POST... |
Не все пишут на PHP, используя стандартные инструменты.
Цитата: | неужели имен мало?? ведь могут быть еще и куки. |
Мне хватает. Вопрос был в возможности одновременной передачи параметров. Ответ - возможно и лёгко. Просто иногда проще написать кусочек кода, чем "многа слов"
|
|
|
|
С нами с 13.08.08
Сообщения: 1538
Рейтинг: 1011
|
Добавлено: 20/04/10 в 14:44 |
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 - через форму.
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 20/04/10 в 15:34 |
Код: | import_request_variables('GP', 'request_'); |
тоже вариант
|
|
|
|
Web Developer С++
С нами с 25.11.01
Сообщения: 859
Рейтинг: 759
|
Добавлено: 20/04/10 в 20:53 |
Не совсем понятна задача и для чего она применяется, но насколько я понял задачу могу предложить два варианта решения, не привязанных к PHP или другому языку
1 вариант - на JavaScript при нажатии на submit-кпонку формировать строку <FORM ACTION="kuku.cgi?q=one" ...>, данные POST будут дублироваться в GET-запросе.
2 вариант - делать промежуточный скрипт, который будет перехватывать запрос (например с помощью mod_rewrite), считывать формы из POST запроса и переписывать переменные окружения под GET запрос , а после вызывать скрипт который будет считать что его вызвали методом GET.
|
|
|
|