ПОЛУЧИТЬ и ПОСТИТЬ на одной странице? - PullRequest
6 голосов
/ 13 июня 2010

РЕДАКТИРОВАТЬ: Ответ найден!Большое спасибо, люди, много ответов сработало, я выбрал ответ в скрытом поле, так как это было проще всего: D

Я создаю сценарий комментирования и столкнулся с проблемой.Мне приходится использовать $ _POST и $ _GET на одной странице, что, я думаю, не имеет смысла.

Я очень плохо знаком с php и тренируюсь сам.

У меня естьстраница с именем viewVerses.php - здесь есть списки стихов.Когда кто-то переходит по ссылке для ответа,

echo '<br /><a href="reply.php?verseid='.$verseid.'">Reply</a>';

Я передаю стих (комментируя стихи из Библии) в файл reply.php, чтобы можно было выполнить запрос с этим стихом.(Это так, что пользователь все еще может видеть стих, который он / она комментирует).

Теперь в reply.php есть форма для отправки ответа.Форма отправляется в postReply.php

Это в postReply.php

$title = $_POST['title'];
$body = $_POST['body'];
$verseid = $_GET[verseid];

Могу ли я получить verseid из URL и POST значения из формы на той же странице?

Если нет, то есть ли способ сделать это лучше?Помните, я новичок в php и, вероятно, не буду реализовывать решение, которое будет очень сложным.Я должен получить его, чтобы разместить его на моем сайте.

Надеюсь, это понятно

Ответы [ 6 ]

7 голосов
/ 13 июня 2010

Я бы добавил скрытый ввод в форму комментария:

<input type="hidden" name="verseid" value="
<?php echo $_GET['verseid']; ?>
" />

Таким образом, в postReply.php вы можете получить к нему доступ, используя $_POST['verseid'].

4 голосов
/ 13 июня 2010

Да, вы можете. Метод формы (на html-странице) может быть POST, а URL-адрес действия может содержать аргументы «GET», например, process.php?vid=1001. Таким образом, в process.php вы будете иметь vid как $ _GET, а остальные данные из формы - как $ _POST.

1 голос
/ 13 июня 2010

Конечно, вы можете просто установить действие формы на postReply.php? Verseid = id_of_the_verse, когда пользователь отправляет ответ, в массиве POST будут данные, относящиеся к ответу, а в GET - идентификатор стиха..

0 голосов
/ 14 июня 2010

Использование формы со скрытым вводом (<input type="hidden" name="verseid" value="..." />), вероятно, является самым чистым способом выполнения действий.

PHP также определяет глобальный массив $_REQUEST в дополнение к $_GET и $_POST.В общем случае вы должны использовать или $_GET или $_POST, но в этом случае, когда для обоих методов передается verseid, может быть удобнее использовать $_REQUEST['verseid'].Таким образом, вам не нужно заботиться о методе HTTP, используемом в вашем скрипте.

0 голосов
/ 13 июня 2010

Хотя это может показаться нелогичным, HTTP-запрос может поступать как с данными Form, так и QueryString.Как говорит Робертбасик, вы можете получить к ним доступ через соответствующие массивы.

0 голосов
/ 13 июня 2010

Да, можно смешивать значения GET и POST с одним запросом.Возможно, проблема в том, что вы передаете значение GET в reply.php, которое затем передает значения POST в postReply.php.Таким образом, если вы не скажете reply.php также отправить это значение GET, оно будет потеряно.

Это можно сделать, указав значение GET в параметре action тега form,или вы можете даже переключиться на значение POST, добавив <input type="hidden" name="verseid" value="<?php echo $verseid; ?>" /> к форме.

...