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$_SESSIONentradas$_SESSIONse registran automáticamente. Si su script usasession_register(), no funcionará en entornos donde la directiva PHPregister_globalsestá 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 claveglobalo 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");