php - funciona - ¿Cómo solucionar el problema obsoleto session_register()?
call to undefined function session_register() (6)
Cómo solucionar el problema desaprobado session_register()
en PHP 5.3
No lo uses La descripción dice:
Registre una o más variables globales con la sesión actual.
Dos cosas que se me vinieron a la mente:
- El uso de variables globales no es bueno de todos modos, encuentra una forma de evitarlos.
- Aún puede establecer variables con
$_SESSION[''var''] = "value"
.
Ver también las advertencias del manual :
Si desea que su secuencia de comandos funcione independientemente de
register_globals
, en su lugar debe usar la matriz$_SESSION
entradas$_SESSION
se registran automáticamente. Si su script usasession_register()
, no funcionará en entornos donde la directiva PHPregister_globals
está deshabilitada.
Esto es muy importante, porque la directiva register_globals
está establecida en False
de forma predeterminada.
Promover:
Esto registra una variable
global
. Si desea registrar una variable de sesión desde dentro de una función , debe asegurarse de hacerlo global utilizando la palabra claveglobal
o la$GLOBALS[]
, o use las matrices de sesión especiales como se indica a continuación.
y
Si está utilizando
$_SESSION
(o$HTTP_SESSION_VARS
), no usesession_register()
,session_is_registered()
ysession_unregister()
.
Para complementar la respuesta de Felix Kling , estaba estudiando una base de código que solía tener el siguiente código:
if (is_array($start_vars)) {
foreach ($start_vars as $var) {
session_register($var);
}
} else if (!(empty($start_vars))) {
session_register($start_vars);
}
Para no usar session_register hicieron los siguientes ajustes:
if (is_array($start_vars)) {
foreach ($start_vars as $var) {
$_SESSION[$var] = $GLOBALS[$var];
}
} else if (!(empty($start_vars))) {
$_SESSION[$start_vars] = $GLOBALS[$start_vars];
}
Solo tenemos que usar @
frente a la función obsoleta. No es necesario cambiar nada como se menciona en las publicaciones anteriores. Por ejemplo: if(!@session_is_registered("username")){ }
. Simplemente ponga @
y el problema está resuelto.
antes de PHP 5.3
session_register("name");
desde PHP 5.3
$_SESSION[''name''] = $name;
si necesita una función de respaldo puede usar esto
function session_register($name){
global $$name;
$_SESSION[$name] = $$name;
$$name = &$_SESSION[$name];
}
Use $_SESSION
directamente para establecer las variables. Me gusta esto:
$_SESSION[''name''] = ''stack'';
En lugar de:
$name = ''stack'';
session_register("name");