我一直在使用PHP 5.2并使用register_globals ON。现在我转向PHP 5.3,我明白我必须改变一些编码。我已经读过这篇文章,但我仍然没有清楚地了解我必须做出哪些改变。
在5.2中我使用
session_start();
在我的表格顶部。在5.3中我还需要这样做吗?
我目前也使用像这样的变种
$_SESSION[php_g_name"] = "John";
或
if ($_SESSION["php_g_name"] == "")
可以继续在5.3中使用吗?如果没有,vars的语法是什么?
感谢您的任何澄清。
答案 0 :(得分: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
答案 1 :(得分:0)
是的,您仍然需要在每个文件的顶部设置会话开始。
对于变量,$_SESSION["php_g_name"]
将起作用,但$php_g_name
不会,除非您声明$php_g_name = $_GET(or session)["php_g_name"]