Как отправить форму на две разные страницы в зависимости от нажатой кнопки, без javascript

У меня есть форма с текстовой областью и двумя кнопками, мне нужно, чтобы один из них отправлял на ту же страницу, а другой – в другой php-файл. Обе кнопки должны разрешать ссылки на текстовые области по почте. Как я могу это сделать.

Например:

<form action="" method="post"> <textarea></textarea> <input type='submit' value='Preview'> //I want this to submit to the same page <input type='submit' value='Save'> // I want this to submit to save.php </form> 

Примечание. Весь мой html генерируется php через разные сценарии, которые изменяются в зависимости от предыдущих действий пользователей.

 <?php if (isset($_POST['action1']) || isset($_POST['action2'])) { // handle textarea if (isset($_POST['action1'])) { header('Location: /action1.php'); exit(); } header('Location: /action2.php'); exit(); } ?> <form> <fieldset> <textarea name="text"></textarea> <input type="submit" name="action1" value="Action1"> <input type="submit" name="action2" value="Action2"> </fieldset> </form> 

Вы должны быть осторожны в том, что происходит, когда пользователь нажимает клавишу ввода для отправки формы. Т.е. какая подача будет запущена.

Дайте каждой кнопке отправки имя (например, button1 и button2). Отправьте форму на один скрипт php. На этом скрипте php отметьте $ _POST vars, чтобы увидеть, какая кнопка была нажата. Затем действуйте соответствующим образом, обрабатывая ваши значения формы и перенаправляя на любую страницу, которую вы хотите впоследствии.

Чтобы проверить, какая кнопка была нажата, сделайте что-нибудь вроде:

 if ($_POST["button1"]) { // do stuff } elseif ($_POST["button2"]) { // do other stuff } 

вы можете сделать это со стороны сервера (как было указано ранее), вы можете сделать это со стороны клиента в качестве моего ответа: (вы можете даже сделать оба):

 <form action="" id="frm" method="post"> <textarea></textarea> <input type='button' onclick="submitMe(this)" value='Preview'> <input type='button' onclick="submitMe(this)" value='Save'> </form> <script> function submitMe(obj){ if(obj.value == "Preview"){ document.getElementById('frm').action = 'preview.html' }else{ document.getElementById('frm').action = 'save.html' } document.getElementById('frm').submit(); } </script> 

Если вы используете CodeIgniter есть лучшие способы сделать это. (другая CodeIgniter для CodeIgniter указывает на то, что это дубликат, поэтому я подумал, что добавлю лучшее решение для CI .)

В моем случае у меня есть форма корзины покупок (например). На этой форме у меня могут быть кнопки: checkout, update cart и clear.

Форма:

Вот кнопки формы на экране формы корзины:

 <input type="submit" value="Update"> <input type="submit" value="Clear"> <input type="submit" value="Checkout"> 

контроллер:

Действие формы указывает на controller с сохранением метода ( "cart/save/" ). Save просто определяет, какая кнопка была нажата и перешла в соответствующую функцию корзины, чтобы обрабатывать отправку формы.

Корзина / сохранить ()

 public function save() { $submit_button = $this->input->post('submit_button'); if ($submit_button == 'Update') $this->update(); else if ($submit_button == 'Checkout') $this->checkout(); else if ($submit_button == 'Clear') $this->clear(); } 

Внутри контроллера ( cart ) я просто выполняю функции update() , clear() и checkout() которые вызывает метод save() . Нет необходимости перенаправлять через переадресацию перенаправления CI () или php заголовков и т. Д.

Я надеюсь, что это поможет кому-то

Сделайте это на стороне сервера через перенаправление.