Что произойдет, если вы перейдете к URL-адресу в стиле GET с запросом POST? - PullRequest
0 голосов
/ 07 января 2009

Допустим, у меня есть страница с именем display.php, и пользователь просматривает display.php?page=3. Я хочу разрешить пользователю выполнять такие действия, как голосование через POST-запрос, а затем возвращать его на страницу, на которой он находился. Итак, если я сделаю POST-запрос к display.php?page=3, будет ли информация о странице также доступна сценарию?

Ответы [ 3 ]

2 голосов
/ 07 января 2009

Простой ответ - «да». Вы можете использовать URL-адрес в стиле GET в качестве URL отправки для формы POST. PHP будет иметь доступ к информации POST и GET обычным способом при отправке формы.

Это не означает, что вы должны сделать это, но это будет работать.

1 голос
/ 07 января 2009

Да, массив GET всегда заполняется параметрами URL независимо от метода запроса. Вы можете попробовать это с простой страницей, подобной этой:

<code><form action="test.php?a=b" method="post">
    <input name="a"/>
    <input type="submit"/>
</form>
<pre>
POST:
<?php print_r($_POST); ?>
GET:
<?php print_r($_GET); ?>
1 голос
/ 07 января 2009

В PHP вы можете получить переменные запроса из специальных глобальных массивов:

$_GET['page'] (for GET requests)
$_POST['page'] (for POST requests)
$_REQUEST['page'] (for either)

Похоже, вы ищете "Перенаправление после публикации", я бы предложил разделить display.php и voice.php на отдельные файлы. Голосование выглядит примерно так:

<?php
//vote.php
$page_number = (int)$_REQUEST['page'];
vote_for_page($page_number); //your voting logic
header('Location: display.php?page=' . $page_number); //return to display.php

Обратите внимание, что слепое принятие неанизированных данных формы может быть опасным для вашего приложения.

Редактировать: Некоторые люди считают плохой формой использовать $ _REQUEST для обработки обоих случаев. Опасность заключается в том, что вы можете сообщить об ошибке, если получите GET, когда ожидаете POST. Обычно GET резервируется для просмотра, а POST резервируется для внесения изменений (операции создания / обновления / удаления). Является ли это действительно проблемой, зависит от вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...