2014-10-09 60 views
0

我有任何形式提交使用PHP自我网址。对于行动网址我有两个办法:PHP空行动表格与PHP自我

  • 插入空这样的:<form action="">
  • 插入$_SERVER["PHP_SELF"]

哪种方式更好更安全?

+5

通常,我使用'action =“”',但这个问题似乎主要是基于意见的。 – 2014-10-09 14:05:54

+0

我会同意@这个。 “”是一个可靠的动作URL – Pogrindis 2014-10-09 14:06:28

+3

php_self可能是一种注入危险,因为它本质上就是脚本被调用的。如果它包含html,它将在表单中逐字显示。 – 2014-10-09 14:11:50

回答

7

不要指望非标准行为,这是当浏览器在没有指定表单动作时将表单提交到同一页面时发生的情况。始终要清楚简明,以避免未解决的问题。特别是当它全部在你的控制范围内时。

+0

公平的答案,你可以举一个例子,当行动=“”可能会导致行动路线错误? – Pogrindis 2014-10-09 14:08:24

+2

我知道的所有浏览器都会在实际中将表单提交到相同的URL,这不会成为问题。 *但是,理论上,还有其他用户代理抓取文档,并且它们可能不会表现出相同的行为。通过显式声明一个URL,您可以消除这种不明确性(并明确指出缺少的操作不是错误)。 – 2014-10-09 14:10:19

+1

@JohnConde哇,从来没有想到的! +1 – 2014-10-09 14:10:48

1

第三个选项可能是最好的:使表单的页面应该知道它自己的url,所以输入它。 @johnconde在不依赖非标准行为的论点中是正确的,但是你所提供的替代品并不是很好:你希望用户没有做出某些事情(或者在做某件事情时被欺骗)。

随机链接:http://www.dzhang.com/blog/2013/05/20/php_self-and-cross-site-scripting解释这一点。

更好地了解您的网页,并回显您正在查看的实际网页。