提交隐藏了操作属性的表单

时间:2011-10-25 10:52:04

标签: php javascript forms

我想知道如何提交没有显示操作属性的表单。 喜欢这个

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

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

我想要这样

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

但它处理到我想要的文件。

请帮忙吗?

5 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

首先,我不太明白你为什么要这样做。 action属性的重点是告诉浏览器将请求发送到哪里,并且“隐藏”它什么都没有 - 任何中途能干的黑客(甚至不到一半)仍然可以找到信息无论你做什么,你都在躲藏。

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

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

答案 2 :(得分:0)

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

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

请注意,如果客户端禁用了javascript,则整个POST将执行。此外,如果有人查看你的js,你也可以看到隐藏的文件名,除非你用密码保护js文件。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

当你有一个表格时,你必须有一个相关的动作,因为CodeCaster指出:浏览器需要知道在哪里发送数据。它就像是超链接而没有设置href-Attribute。什么都不会发生,因为浏览器现在不做什么。