EDIT: Ответ найден! Большое спасибо, много ответов работало, я выбрал скрытый ответ на поле, поскольку это было проще всего: D
Я создаю сценарий комментирования, и я столкнулся с проблемой. Мне нужно использовать $ _POST и $ _GET на той же странице, что, на мой взгляд, не имеет смысла.
Я очень новичок в php и сам тренируюсь.
У меня есть страница с именем viewVerses.php – у нее есть списки стихов. Когда кто-то следует за ответной ссылкой,
echo '<br /><a href="reply.php?verseid='.$verseid.'">Reply</a>';
Я передаю verseid (комментируя библейские стихи) в reply.php, так что запрос может быть сделан с этим verseid. (Это так, что пользователь все еще может видеть стих, который он комментирует).
Теперь answer.php имеет форму для отправки ответа. Форма отправляется postReply.php
Это в postReply.php
$title = $_POST['title']; $body = $_POST['body']; $verseid = $_GET[verseid];
Могу ли я получить verseid из url и POST значения из формы на той же странице?
Если нет, есть ли способ сделать это лучше? Помните, что я новичок в php и, вероятно, не буду реализовывать решение, которое сложно. Я должен получить его для моего, чтобы поместить его на свой сайт.
Надеюсь, это ясно
Я бы добавил скрытый ввод в форму комментария:
<input type="hidden" name="verseid" value=" <?php echo $_GET['verseid']; ?> " />
Таким образом, в postReply.php вы можете получить к нему доступ, используя $_POST['verseid']
.
Да, ты можешь. Метод формы (на странице html) может быть POST, а URL-адрес действия может содержать аргументы «GET», что-то вроде process.php?vid=1001
так сказать. Итак, в process.php
вас будет vid
как $ _GET, а остальные данные из формы – $ _POST.
Конечно, вы можете просто установить действие формы postReply.php? Verseid = id_of_the_verse таким образом, когда пользователь отправляет ответ, в массиве POST будут данные, связанные с ответом, и в GET идентификатор стиха.
Да, с одним запросом можно смешивать значения GET и POST. Вероятно, проблема заключается в том, что вы передаете значение GET для reply.php
, которое затем передает значения POST в postReply.php
. Итак, если вы не скажете reply.php
чтобы отправить это значение GET, оно потеряется.
Вы можете сделать это, указав значение GET в параметре действия тега form
, или вы можете даже переключиться на значение POST с помощью этого, добавив <input type="hidden" name="verseid" value="<?php echo $verseid; ?>" />
в форму.
Хотя это может показаться противоречивым, HTTP-запрос может поступать как с данными Form
и с QueryString
. Как и robertbasic, вы можете получить к ним доступ через соответствующие массивы.
Использование формы со скрытым вводом ( <input type="hidden" name="verseid" value="..." />
), вероятно, самый чистый способ делать вещи.
PHP также определяет глобальный массив $_REQUEST
в дополнение к $_GET
и $_POST
. В общем случае вы должны использовать либо $_GET
либо $_POST
но в этом случае, когда verseid
передается для обоих методов, было бы удобнее использовать $_REQUEST['verseid']
. Таким образом, вам не нужно беспокоиться о методе HTTP, который используется в вашем скрипте.