阻止HTML表单操作显示在浏览器上,或在执行操作后重定向到另一个页面

时间:2013-11-28 07:18:58

标签: html forms

好吧,让我们这样说:如何在提交一个如下所示的表单后,将用户“重定向”到另一个页面“MyPage.php”:

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

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

请注意,我无法控制action属性中提供的URL。这是一个外部来源。这意味着,我无法编辑“APageICanNotEdit.php”文件。

这就是我想要的:

  • 用户将点击提交按钮(标记为Go)
  • action="http://www.example.com/APageICanNotEdit.php" - 此操作 如果可能,必须执行,而不显示其内容。
  • 我希望用户安全地到达“MyPage.php” 执行“APageICanNotEdit.php”。
  • 我需要一个解决方案,而不会更改操作中的URL,因此 打败了目的。

1 个答案:

答案 0 :(得分: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
 });