2012-03-29 100 views
0

当您使用PHP,哪些代码是更好地使用提交表单回自己:哪个更好

PHP_SELF or REQUEST_URI? 
+2

更好地使用什么? – j08691 2012-03-29 23:02:39

+2

他们是两回事。 '$ _SERVER [“REQUEST_URI”];'是请求URI,如'/ question/123'和'$ _SERVER [“PHP_SELF”];'是脚本的路径,Web服务器最终调用的就是'/ classes/question/Qeustion.inc'。如果你没有使用任何重写,它们是相同的,但如果你是完全取决于你想要哪一个。 – Halcyon 2012-03-29 23:04:03

+0

所以当浏览到你自己的页面时,最好是重新获取脚本的url或路径? – user1292857 2012-03-29 23:06:37

回答

0

都不是。使用这个:

<form action=''> 
+0

这不会做任何事情在某些浏览器(老年歌剧, 我认为)。没有提交,没有任何内容。但是,'action ='?''可以正常工作。 – Piskvor 2012-03-29 23:05:42

+1

我认为最好总是使用绝对URL。 $ _SERVER [“REQUEST_URI”];'或$ _SERVER [“PHP_SELF”];'都不会帮助你做到这一点。 – Halcyon 2012-03-29 23:06:04

+0

@Piskvor可能也想出如何使它与Netscape兼容。大声笑**卷眼睛** – 2012-03-29 23:06:33

0

根据您的服务器软件,使用Linux下的REQUEST_URI和windows下的PHP_SELF,然后获得速度。来源:http://sniptools.com/vault/php_self-getenv-request_uri-or-script_name

+2

我不认为这是。网络服务器确保它在那里(Apache无论如何)。一些'$ _SERVER'变量是用户控制的,比如'HTTP_REFERER',但我不相信这个。 – Halcyon 2012-03-29 23:08:24

+0

我修改了我的帖子。感谢您的评论。 – ArendE 2012-03-29 23:31:05

0

REQUEST_URI是一切域名的URL的权利,因此,如果您的网址是:http://example.org/funny/form.php,然后REQUEST_URI将“/funny/form.php”

这是你想要的要做的事:

<form action="<?php echo($_SERVER['REQUEST_URI']); ?>"> 
</form> 

这会将表格发送到访问者所在的URL。

注意:进行GET请求时,get变量也在REQUEST_URI中。因此,如果您的网址是:http://example.org/funny/form.php?name=obama,那么REQUEST_URI将为“/funny/form.php?name=obama”,这不是您希望作为表单元素中的操作属性。如果您使用POST请求,这不是问题。如果您正在使用GET请求,则必须在问号处切断REQUEST_URI。

0

我会建议使用FULL URL,所以使用REQUEST_URI并编写一个函数来生成完整的URL并将其插入到表单中。另一种方法是使用""提交到当前页面。您不需要使用PHP_SELF,但如果您这样做,请注意dangers