【发布时间】:2012-12-15 02:58:39
【问题描述】:
在 PHP 页面上的表单中,您可以使用:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" ...>
或
<form action="#" ...>
或
<form action="" ...>
在表单的action属性中。既然 echo $_SERVER['PHP_SELF'] 不传递变量以使用 GET 并且您必须使用 "",那么您为什么要使用它或 "#"?
我之所以这么问,是因为我花了一些时间才弄清楚变量没有通过$_SERVER['PHP_SELF'] 传递。谢谢。
【问题讨论】:
-
我不太明白你的问题。你想达到什么目的?您是否尝试在通过 POST 发送表单时在 URL 中传递 GET 变量?
-
您可以使用 argv 返回 GET 变量:php.net/manual/en/reserved.variables.server.php
-
我更喜欢使用 $_SERVER['SCRIPT_NAME']
-
好吧,我的主要问题是,当您可以使用
action=""时,为什么有人会使用$_SERVER['PHP_SELF']?另外,我在一个页面上有一个表单,它的 URL 中有变量,例如 www.example.com?id=43。如果我使用$_SERVER['PHP_SELF'],它不会得到变量,但使用"",它会得到。我知道我可能会做$_SERVER['PHP_SELF']?id=echo $id,但是当""有效时,为什么还要做所有这些额外的工作? -
我知道这很旧,但答案是很久以前,action 属性是必需的,根据 html 规范,您也应该提供完整的 URL。 IE 偏离了规范,当 action 属性丢失或为空时会回发到源 URL,firefox 也效仿,但是当 webkit 实现它时,他们决定它应该发回站点的根目录,所以你不能t 使用缺失/空操作并与跨浏览器兼容。最终,webkit 在更新的 HTML 规范更改后更改了它们的实现。