2010-06-13 2 views
6

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

Я создаю скрипт для комментирования, и я столкнулся с проблемой. Мне нужно использовать $ _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 и, вероятно, не буду реализовывать решение, которое сложно. Я должен получить его для моего, чтобы поместить его на свой сайт.

Я надеюсь, что это ясно

ответ

7

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

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

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

+0

Это, наверное, самое простое решение! Благодаря! – Phil

1

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

4

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

0

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

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

0

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

0

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

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

Смежные вопросы