Параметры в форме действия URL исчезают?

0
<form action="create_page.php?subject=<?php echo urlencode($current_subject["id"]); ?>" method="post">

После $current_subject["id"] исчезает. Я знаю, что это происходит в методе GET, но почему он исчезнет в методе POST?

Странные вещи случаются, когда форма не передает мою функцию проверки, параметр остается там. Но когда он проходит, он уходит. Я знаю, что могу использовать скрытое поле, но мне любопытно, почему это происходит.

  • 0
    что такое $current_subject["id"] и есть ли у вас значение, установленное в create_page.php для того же самого?
  • 0
    Это значение, которое я хочу добавить в URL, чтобы я мог выполнить некоторую проверку перед отправкой в mysql.
Показать ещё 1 комментарий
Теги:
forms

2 ответа

1
Лучший ответ

может показаться, что у вас есть пустое значение для $current_subject["id"] поэтому попробуйте проверить

if(!empty($current_subject["id"])) {
  // do yourstuff
}

или для лучшего альтернативного способа попытаться использовать как скрытую форму

 <form action="create_page.php">
    <input type ="hidden" name="subject" value="<?php echo urlencode($current_subject['id']);?>">
1

Да, это не сработает, и для этого вам нужно вернуться к определению GET и POST.

В запросе GET параметры формы кодируются в URL-адресе и называются строкой запроса. Поэтому использование

$_GET будет ожидать параметры в строке запроса.

Запрос POST передает параметры формы в теле HTTP-запроса, а не в URL-адресе.

Поэтому использование $_POST ожидает, что данные в HTTP-запросе не будут в строке запроса.

И именно по этой причине данные передаются в скрытом поле, как в вашем примере.

  • 0
    Но $ current_subject ["id"] находится не в теле (это не то, что вводит пользователь), а в части URL. Поэтому я не могу отправить его на URL-адрес действия, чтобы он снова добавлялся в URL-адрес?
  • 0
    Вы можете добавить строку запроса к URL-адресу запроса, но помните, что на принимающей стороне вы не можете поймать значение, используя $ _POST. Вы можете проверить, как данные отправляются с помощью некоторых инструментов разработчика браузера, которые предоставят вам больше информации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню