如何修复session_register()已弃用的问题?

DEV*_*OPS 43 php session deprecated

如何修复session_register()PHP 5.3中已弃用的问题

Fel*_*ing 44

不要使用它.描述说:

使用当前会话注册一个或多个全局变量.

我想到了两件事:

  1. 无论如何,使用全局变量并不好,找到一种方法来避免它们.
  2. 您仍然可以使用设置变量$_SESSION['var'] = "value".

另请参阅手册中的警告:

如果您希望脚本无论如何都可以工作register_globals,则需要使用该$_SESSION数组,因为$_SESSION条目会自动注册.如果您的脚本使用session_register(),它将无法register_globals禁用PHP指令的环境中工作.

这非常重要,因为该register_globals指令默认设置为False!

进一步:

这会注册一个global变量.如果要在函数内注册会话变量,则需要确保使用global关键字或$GLOBALS[]数组使其成为全局变量,或使用如下所述的特殊会话数组.

如果您正在使用$_SESSION(或$HTTP_SESSION_VARS),不使用session_register(),session_is_registered()session_unregister().


sha*_*mar 24

使用$_SESSION直接设置变量.像这样:

$_SESSION['name'] = 'stack';
Run Code Online (Sandbox Code Playgroud)

代替:

$name = 'stack';
session_register("name");
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多


Ser*_*val 18

在PHP 5.3之前

session_register("name");
Run Code Online (Sandbox Code Playgroud)

自PHP 5.3起

$_SESSION['name'] = $name;
Run Code Online (Sandbox Code Playgroud)


wut*_*aer 10

如果你需要一个后备功能,你可以使用它

function session_register($name){
    global $$name;
    $_SESSION[$name] = $$name;
    $$name = &$_SESSION[$name]; 
}
Run Code Online (Sandbox Code Playgroud)