#php #forms #query-string
#php #формы #строка запроса
Вопрос:
У меня есть следующая форма в моем form.php файл:
<form action="operation.php?part=dictionaryamp;operation=<?php echo (($_GET['action']=='addword')?'save':'editamp;id='.$_GET['id'])?>" method="get">
.....
....
</form>
И в моем operation.php файл:
if($_GET['operation']=='save'){
echo "This is true";
}else{
die(mysql_error());
}
И он показывает сообщение о том, что он не распознает параметр operation.
Так что, если у кого-нибудь есть представление о том, как отличить операцию между сохранением и редактированием, я был бы очень признателен. Спасибо вам
Комментарии:
1. Есть ли причина, по которой вы делаете GET против POST?
2. Сигнал тревоги XSS.
$_GET['id']
должно бытьhtmlspecialchars($_GET['id'])
. РЕДАКТИРОВАТЬ: если не приведено к int и urlencoded.3. Для чего
mysql_error()
это нужно??
Ответ №1:
Вы можете попробовать использовать:
<form action="operation.php" method="get">
<input type="hidden" name="part" value="dictionary">
<input type="hidden" name="operation" value="<?php echo (($_GET['action']=='addword')?'save':'editamp;id='.$_GET['id'])?>">
</form>
Ответ №2:
Установка метода формы на «GET» приводит к игнорированию всех GET-параметров, добавленных к действию формы. Чтобы заставить эти параметры работать, вам нужно будет добавить их в качестве скрытых полей ввода, иначе вы переключите метод вашей формы на «POST». Это приводит к настройке POST-параметра в соответствии с полями формы и настройке GET-параметра в соответствии с добавлениями ссылок, сделанными при действии формы.
Ответ №3:
Вам нужно использовать скрытые параметры для отправки значений в вашу форму, например:
<form action="operation.php" method="GET">
<input type="hidden" name="part" value="dictionary" />
<input type="hidden" name="operation" value="<?php echo (($_GET['action']=='addword')?'save':'editamp;id='.$_GET['id'])?>" />
</form>