добавление параметров URL в форму PHP HTML
Правильно ли или правильно указывать параметр url get в действии формы?
<form method='get' action='index.php?do=search'>
<input name='_search' type='text' value='What are you looking for?'>
<button type='submit'> Search </button>
</form>
Когда я отправляю форму, URL-адрес изменяется на:
index.php?_search=What are you looking for? (I've stripped %20)
Я бы предпочел, чтобы URL-адрес читался
index.php?do=search&_search=What are you looking for?
Было бы лучше добавить скрытое поле в форму
<input type='hidden' name='do' value='search' />
3 answers
На мой взгляд, вы должны добавить их в качестве скрытых полей. Нет смысла пытаться передавать параметры, если вы можете сделать это через скрытое поле формы
Используйте это:
<input type='hidden' name='do' value='search' />
A не вижу никаких причин, по которым вы не можете или не должны делать это таким образом. Однако мой предпочтительный метод обработки этого был бы следующим:
<form method='get' action='index.php'>
<input name='_search' type='text' value='What are you looking for?' />
<submit name='do' value='Search'>
</form>
Пара имя/значение "выполнить/поиск" передается при нажатии кнопки, и если вы хотите создать несколько действий в форме, вы можете использовать разные значения для каждой кнопки "Отправить", обрабатывая форму несколькими способами.
if ($_GET['do'] == "Search") {
... do Search ...
} else if ($_GET['do'] == "Foo") {
... do Foo ...
} else if ($_GET['do'] == "Bar") {
... do Bar ...
}
В качестве альтернативы вы можете использовать конструкцию case:
switch($_GET['do']) {
case "Search":
... do Search ...
case "Foo":
... do Foo ...
break;
case "Bar":
... do Bar ...
break;
}
Я обычно использую post
сам, но я уверенget
будет работать точно так же. Надеюсь, это ответ на ваш вопрос.
Я думаю так же, как и Теодор, не должно быть причин не отправлять переменную в виде скрытого поля. Но на тот случай, если у вас есть веская причина для этого... Вы пробовали добавить & в конце URL-адреса:
<form method='get' action='index.php?do=search&'>