2014-01-19 27 views
0

我一直在使用PHP 5.2並使用register_globals ON。現在我正在轉向PHP 5.3,我知道我必須更改一些編碼。我已經閱讀了這篇文章,但我仍然沒有清楚地瞭解我必須做出什麼改變。在PHP 5.3中的PHP註冊全局支持?

在5.2我用

session_start(); 

在我的形式上面。在5.3中,我還需要這樣做嗎?

我目前還使用這樣

$_SESSION[php_g_name"] = "John"; 

if ($_SESSION["php_g_name"] == "") 

瓦爾那是OK繼續在5.3使用?如果不是,vars的語法是什麼?

感謝您的任何澄清。

+3

這非常好。但沒有register_globals,'$ php_g_name ='foo''將不起作用。並且首先使用register_globals會讓你感到慚愧。它(並且一直是)PHP最瘋狂愚蠢的設計「特性」。 –

回答

1

PHP Register_Globals是最具代表性的一個,但也是PHP的罵聲最多的「特色」之一。這正是PHP早期允許獲得如此多的牽引力和使用量的原因。

你能做到這一點

<?php 
//for a url example.com/myfile.php?UserName=Toby 
echo "Hello $UserName"; 
?> 

它使人們很容易得到訪問來自_GET變量和_POST而且(在你的情況下)_SESSION。

但是它具有非常糟糕的安全隱患,並且自從php 4左右(有人會準確地告訴我)默認關閉。

基本上意味着什麼,你的是,如果你這樣做是爲了讓你的會話變量訪問

<?php 
session_start(); 
echo $php_g_name ; 

與註冊全局變量$ php_g_name會不會有一個值,現在它。然而,這將工作。

<?php 
session_start(); 
echo $_SESSION["php_g_name"] ; 

如果你現在正在這樣做,你應該沒問題。你將需要改變你的代碼,以便始終使用包含數組,例如$_SESSION

+0

我正在使用echo $ _SESSION [php_g_name「]方法,而不是echo $ php_g_name方法,所以它看起來像我可能會很好,我的代碼移動到PHP 5.3 +吧? – RalphF

+0

應該沒問題,但也許嘗試先測試服務器,看看是否有其他問題。 –

0

是的,你仍然需要設置每個文件頂部的會話開始。 對於變量,$_SESSION["php_g_name"]將工作,但$php_g_name不會,除非你指出$php_g_name = $_GET(or session)["php_g_name"]