Intereting Posts
Извлечение совпадений из php regex Почему Ajax дает мне ошибку перекрестного происхождения, когда я могу сделать запрос с PHP? Как вы присоединяетесь к двум объектам PDO в одном и том же цикле foreach? Как обрабатывать Неустранимая ошибка: ошибка cURL 7: Не удалось подключиться к порту xxxx 443 Выполнение запросов в PDO без привязки Laravel 5 получить имя INSERT IGNORE или INSERT WHERE NOT IN Как отсортировать функцию query_posts по настраиваемому полю, а ограничивать сообщения другим настраиваемым полем Как загрузить классы из нескольких каталогов с помощью __autoload? mysql: показать дату из даты и времени Многократное наследование PHP с интерфейсами ionCube Loader, возвращающий пустой экран Проблема получения реального IP-адреса в php PHP-почта с кодировкой utf-8 отображается неправильно в почтовых клиентах Microsoft Как удалить файлы из каталога на основе даты создания в php?

Несколько форм и одна страница обработки

пожалуйста, мне нужна ваша помощь с проблемой. На моей домашней странице есть две формы, которые я хотел бы, чтобы пользователи заполняли и отправляли в разное время. Моя проблема в том, что мне нравится иметь только одну страницу обработки для обоих из них. Обычно я могу делать это на отдельных страницах. Но я хотел бы знать, возможно ли сделать это на одной странице.

Хорошо. Если я отправлю форму A, на странице действия не будет указана Undefined Index для переменной формы B, которая не была отправлена, и, конечно же, использование GET не рекомендуется.

Спасибо за ваше время и терпение.

Это не совсем неслыханно. Довольно часто другой параметр передается в атрибуте действия элемента формы, например /submit.php?action=register или /submit.php?action=activate .

Итак, у вас есть такой код:

 if ($_GET['action'] == 'register') { // Register user } else if($_GET['action'] == 'activate' { // Activate user } 

Однако вы также можете просто изменить значение кнопки «Отправить» и установить атрибут действия для обеих форм:

 if (isset($_POST['submit'])) { if ($_POST['submit'] == 'register') { // Register user } else if($_POST['submit'] == 'activate') { // Activate user } } 

создайте отдельный скрипт form_process, затем включите его в страницы формы.

 if(!empty($_POST)){ include 'form_process.php'; } 

form_process.php должен содержать только класс / функцию без эха или распечатки.

поочередно вы можете установить URL-адрес действия на ту же страницу, а затем перенаправить обратно на соответствующую страницу.

 <form id="add-profile-form" action="form_controller.php" method="post"> <input type="hidden" name="act" value="adding"/> <!-- form 1. --> </form> <form id="edit-profile-form" action="form_controller.php"> <input type="hidden" name="act" value="editing"/> <!-- form 2. --> </form> 

form_controller.php

 if(isset($_POST['act']){ if($_POST['act'] == 'adding'){ //process form1 }else if($_POST['act'] == 'editing'){ //process form2 } header("Location: success.php"); } 

Вы можете сделать это и на той же странице. Просто вам нужно сделать одно и то же для обеих форм.

Вам нужно сделать какое-то условие и написать отдельные функции для Form A и Form B зависимости от исходной формы.

Вы можете проверить параметры в действии, как @Ami.

/submit.php?action=register или /submit.php?action=activate

Итак, у вас есть такой код:

 if ($_GET['action'] == 'register') { // Register user } else if($_GET['action'] == 'activate' { // Activate user } 

Тем не менее, вы также можете просто изменить значение кнопки отправки и иметь параметр действия одинаковый для обеих форм:

 if (isset($_POST['submit'])) { if ($_POST['submit'] == 'register') { // Register user } else if($_POST['submit'] == 'activate') { // Activate user } }