2014-04-25 25 views
0

我在我的網站上使用全局變量,例如GET,POST,FILES,SESSION。我在服務器上寫了我的網站,其中register_globals is on。而我只是將我的網站移動到另一臺服務器,其中register_globals is off我實際上不知道如何處理它。如何在PHP上使用register_globals關閉

對於〔實施例,我有這樣的代碼:

$do = $_GET['do']; 

$name = $_POST['name']; 

我如何理解,我不能做到這一點,PHP無法提取這些數據。我如何更改我的代碼以接收來自GET,POST,SESSION,FILES的數據?

謝謝

+0

你爲什麼不這樣做?你*可以*做'$ name = $ _POST ['name']'。 –

+1

你爲什麼不能做到這一點?只是因爲register_globals關閉並不意味着_GET/_POST,其他全球大氣奇蹟般地消失。他們從來不依賴於register_globals。 –

回答

7

你誤會了。 $_GET & co是superglobals它們始終可用且無法禁用,您的代碼將始終有效。

register_globals使那些$_GET值直接可用作變量。即而不是$_GET['do']你可以使用$do

+0

謝謝,但實際上它不起作用。我使用這個簡單的例子,當訪問index.php?do = 123來檢查:if(isset($ _ GET ['do'])){echo「yes」;}'並且我沒有收到任何結果 –

+0

這不是儘管register_globals有問題。 – deceze

1

這是訪問瓦爾的正確方法,並與register_globals_gpc = off工作:

$do = $_GET['do']; 

如果register_globals_gpc = on$_GET將自動提取,這將工作:

echo $do; 

所以,如果你正在做的它顯示的方式一切都很好。 $_GET,$_POST,$_COOKIE,以及$_SERVER$_SESSION已經是超全球化的並且可以在任何地方使用。

1

快速簡單的方法將使用extract函數。

extract($_POST); 
extract($_GET); 
extract($_COOKIES); 

但是,這是從安全和maintainablity方面非常非常非常糟糕!你應該重寫代碼,如果可能的話,到:

$variable = $_POST['variable']; 
.. 
1

,當我用Google搜索這個問題,並打開它給了我the solution最先serch主頁結果。試試這個,希望它對你有用