2012-03-29 127 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