【问题标题】:Submit form with action attribute hidden提交隐藏动作属性的表单
【发布时间】:2011-10-25 10:52:04
【问题描述】:

我想知道如何在不显示操作属性的情况下提交表单。 像这样

<form action="someact.php" method="post">
...
</form>

有些人建议使用$_PHP['SELF'],但我希望使用另一个 php 文件处理我的表单,例如分离 UI 部分和进程部分,这样任何人都看不到我的进程文件?

我想要这样的

<form method="post">
...
</form>

但它已处理为我想要的文件。

请帮忙?

【问题讨论】:

    标签: php javascript forms


    【解决方案1】:

    首先,我不太明白你为什么想要这个。 action 属性的全部意义在于告诉浏览器将请求发送到哪里,并且“隐藏”它一无所获——任何半路能干的黑客(甚至不到半路)仍然可以找到你所在的信息躲起来,不管你做什么。

    话虽如此,你可以这样做:

    <form id="hidden_action_form" method="post">
      <!-- ... -->
    </form>
    <script type="text/javascript">
      document.getElementById('hidden_action_form').action = 'someact.php';
    </script>
    

    【讨论】:

      【解决方案2】:

      到底为什么需要一个“隐藏”的进程文件?这是不可能的:浏览器必须知道请求应该发送到哪里。

      如果您首先解释了您遇到的问题,而不是您解决该问题时产生的问题,那么其他人也许可以帮助您。

      【讨论】:

        【解决方案3】:

        我觉得你混淆了两件事。 PHP 文件仅在您的服务器上,不会发送到浏览器。服务器(通常是 apache httpd)处理文件并从中生成 HTML 代码。然后将此代码发送到浏览器。

        当你有一个表单时,你必须有一个关联的动作,因为正如 CodeCaster 指出的那样:浏览器需要知道将数据发送到哪里。这就像一个没有设置 href-Attribute 的超链接。什么都不会发生,因为浏览器不知道该做什么。

        【讨论】:

          【解决方案4】:

          你不能那样做。表单必须始终具有操作属性。 没有人可以看到要处理表单数据的文件的内容(如果这是您的问题)。

          【讨论】:

          • 我对我的问题也有同样的疑惑——有些人只是认为不加解释地投反对票是一种有趣的消遣……+1 反对。
          • 你能说什么...无论如何,谢谢你的支持,希望我能为你做同样的事情。
          【解决方案5】:

          如果没有 javascript,您将无法隐藏它。甚至 javascript 也不会隐藏它,但可以将数据发布到另一个文件,同时将用户定向到表单操作中定义的(公共)文件。

          您可以使用 ajax post() 调用将数据 POST 到另一个文件。请参阅提供的链接以使用 jQuery 执行此操作,并确保 ajax 先发送帖子,然后重定向/加载用户内容。

          请注意,如果客户端禁用了 javascript,则整个 POST 将不会执行。此外,如果有人查看您的 js,也可以在其中看到 hidden 文件名,除非您使用密码保护 js 文件。

          【讨论】:

          • 这是你将要得到这个问题的答案的最接近的答案 +1
          猜你喜欢
          • 1970-01-01
          • 2023-03-13
          • 2011-08-04
          • 2015-05-03
          • 1970-01-01
          • 2011-10-11
          • 2019-03-24
          • 2011-01-27
          • 1970-01-01
          相关资源
          最近更新 更多