2013-05-27 51 views
4

我剛剛寫了一個htaccess文件和一個簡單的規則。

RewriteRule ^/?([a-z]{2})/([0-9]{4})/?$ /run/run.php?country=$1&year=$2 [NC,L] 
This does http://www.localhost/us/2014 

在PHP頁面,我無意中做的:

echo $country.' '.$year; 

這給了我下面的輸出,這是正確的。

us 2014 

我沒有這樣做:

$country = $_GET['country']; 
$year = $_GET['year']; 

但它仍然工作。這是正常的行爲。我可以將其用於其他規則和網站嗎?我在Windows 7家庭高級版上使用WAMP。

+2

難道是你解壓$ _GET數組的地方?據我所知,這應該不起作用,但我可能是錯的。 – Luc

回答

13

您可能已在php.ini中打開register_globals。這就是爲什麼你變得與數組索引的名稱(這裏$_GET)。打開register_globals不是最佳做法。

您可以閱讀更多here,爲什麼register_globals是壞的。

+1

register_globals打開:( – jmenezes

+0

關閉'register_globals'是否阻止我使用'global'內函數?例如:function foo {global $ userName; echo $ userName;}? – jmenezes

+2

@jmenezes:不會。 – Nauphal

2

在我看來,這與.htaccess沒什麼共同之處。 PHP獲得的是ReWrite規則的第二部分,因此應該可以訪問$_GET變量。服務器得到http://www.localhost/us/2014和PHP得到/run/run.php?country=us&year=2014

正如nauphal寫這可能是(可能是)register_globals問題。

+0

這是在我的本地機器上,但不在服務器上 – jmenezes

+0

那麼什麼是WAMP? – Voitcus

+0

WAMP?Windows Apache MySql Php ... – jmenezes

相關問題