Запретить отображение формы HTML в браузере или перенаправить на другую страницу после выполнения действия

0

Хорошо, давайте так выразиться: как я могу "перенаправить" пользователя на другую страницу "MyPage.php" после отправки формы, которая выглядит так:

<form action="http://www.example.com/APageICanNotEdit.php" method="POST">

<input type="submit" name="send" value="Go" />
</form>

Обратите внимание, что я не контролирую URL-адрес, указанный в атрибуте действия. Это внешний источник. Это означает, что я не могу редактировать файл APageICanNotEdit.php.

Вот что я хочу:

  • Пользователь нажмет кнопку отправки (помечен как "Go")
  • action="http://www.example.com/APageICanNotEdit.php" - это действие должно быть выполнено, если это возможно, без отображения его содержимого.
  • Я хочу, чтобы пользователь дошел до "MyPage.php" безопасно после выполнения "APageICanNotEdit.php".
  • Мне нужно решение без изменения URL-адреса в действии, потому что это побеждает цель.
  • 0
    Вызов AJAX - ваш друг.
Теги:
forms

1 ответ

1

используйте скрытый параметр, например

 <input type="hidden" name="action" value="1" />

Ваша форма будет выглядеть так:

<form action="http://www.example.com/form-manager.php" method="POST">

</form>

Менеджер формы Yout будет выглядеть так:

 if ($_POST['action'] == "1")
       require_once('ThePHPFileIDoNotWantToBeLoadedOnBrowser.php");

Увидев ваш комментарий, вы можете сделать это с помощью вызова AJAX:

$(document).on('submit' , 'form[action="http://www.example.com/ThePHPFileIDoNotWantToBeLoadedOnBrowser.php"]' , function(e){

     var formData = $(this).serialize(); // if you need any of the vars

     $.ajax({
         url:'someOtherURL.php',
         type:'POST',
         datatype:'json',
         data: formData,
         success : function(data){
             for(var i = 0; i < data.length; i++){
                 console.log(data);

             }
         },
         error : function(s , i , error){
             console.log(error);
         }
     });

     return true; // keep normal behavior
 });
  • 0
    Спасибо за ваш ответ, братан, но он содержит файл «ThePHPFileIDoNotWantToBeLoadedOnBrowser.php» на странице form-manager.php. Действие формы не может быть изменено, оно должно быть «ThePHPFileIDoNotWantToBeLoadedOnBrowser.php». Нужна техника, чтобы это произошло за кулисами :(
  • 0
    С вызовом AJAX это может быть легко, я обновил свой ответ вызовом JQuery AJAX. Для информации, форма [action = ...] немного сумасшедшая, предпочитайте что-нибудь еще, если это возможно ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню