Строка запроса в форме не работает

#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>