session_register funciona _session php session deprecated

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:

  1. El uso de variables globales no es bueno de todos modos, encuentra una forma de evitarlos.
  2. 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 usa session_register() , no funcionará en entornos donde la directiva PHP register_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 clave global 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 use session_register() , session_is_registered() y session_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");

Leer más aquí