Sesiones en php

21 enero, 2008 por Mr. FotoPex Dejar una respuesta »

 

 

session_name

 

(PHP 4, PHP 5)
session_name -- Lee y/o cambia el nombre de la sesión actual

Descripción

string session_name ( [string nombre] )

session_name() devuelve el nombre de la sesión actual. Si se especifica un nombre, el nombre de de la sesión actual se cambia a este valor.

El nombre de la sesión hace referencia al session id utilizado en las cookies y en las URLs. Debería contener únicamente caracteres alfanuméricos; también debería ser corto y descriptivo (p.ej. para usuarios con los avisos de las cookies activados). El nombre de la sesión se restaura al valor guardado por defecto en session.name al comenzar la petición. Así, pues, es necesario llamar a session_name() en cada petición (y antes de llamar a session_start() o a session_register()).

 

Ejemplo:

PHP:
  1. <?php
  2.  
  3. // Cambiar el nombre de la sesi&oacute;n a WebsiteID
  4.  
  5. $nombre_anterior = session_name("WebsiteID");
  6.  
  7. echo "El anterior nombre de la sesi&oacute;n era $nombre_anterior<p>";
  8. ?>

 

 

session_start

 

(PHP 4, PHP 5)
session_start -- Inicializar los datos de una sesión

Descripción
bool session_start ( void )

session_start() crea una sesión (o la continúa basandose en el session id pasado por GET o mediante una cookie).

Si desea usar una sesión con un nombre en concreto, debe llamar a session_name() antes de llamar a session_start().

Esta función siempre devuelve TRUE.

Nota: Si está usando sesiones basadas en las cookies, debe llamar a session_start() antes de que haya ninguna salida al navegador.

session_start() registrará un manejador de salida interno para la reescritura de las URL's si trans-sid está activado. Si un usuario utiliza ob_gzhandler o algo como ob_start(), el orden del manejador de salida es importante para que la salida sea la adecuada. Por ejemplo, el usuario debe registrar ob_gzhandler antes de iniciar la sesión.

 

 

session_register

 

(PHP 4, PHP 5)

session_register -- Registrar una o más variables globales con la sesión actual

Descripción

bool session_register ( mixed nombre [, mixed ...] )

session_register() acepta un número variable de argumentos, cualquiera de los cuales puede ser o una cadena que contiene el nombre de una variable, o una matriz que consista de nombres de variables u otras matrices. Para cada nombre, session_register() registra la variable global con ese nombre en la sesión actual.

Si desea que su script funcione independientemente de register_globals, necesita usar en su lugar la matriz $_SESSION, dado que las entradas de $_SESSION son registradas automáticamente. Si su script usa session_register(), no funcionará en entornos en donde la directiva PHP register_globals esté deshabilitada.

register_globals: Nota importante: Desde PHP 4.2.0 el valor por defecto de la directiva register_globals es off. La comunidad PHP anima a todos a no confiar en esta directiva y usar en su lugar superglobals.

Esto registra una variable global. Si desea registrar una variable de sesión desde el interior de una función, necesita asegurarse de hacerla global usando la palabra clave global o la matriz $GLOBALS[], o usar las matrices de sesión especiales, como se anota a continuación.

Si está usando $_SESSION (o $HTTP_SESSION_VARS), no use session_register(), session_is_registered(), ni session_unregister().

Esta función devuelve TRUE cuando todas las variables son registradas satisfactoriamente en la sesión.

Si session_start() no fue llamada antes de que ésta función sea llamada, se realizará un llamado implícito a session_start() sin parámetro alguno. $_SESSION no imita este comportamiento y requiere session_start() antes de su uso.

Puede crear también una variable de sesión, simplemente definiendo el miembro apropiado de $_SESSION o la matriz $HTTP_SESSION_VARS (PHP < 4.1.0).

Ejemplo:

PHP:
  1. <?php
  2. // El uso de session_register() es considerado obsoleto
  3. $barney = "Un dinosaurio grande y violeta.";
  4. session_register("barney");
  5.  
  6. // Se prefiere el uso de $_SESSION, a partir de PHP 4.1.0
  7. $_SESSION["zim"] = "Un invasor de otro planeta.";
  8.  
  9. // El modo antiguo era usar $HTTP_SESSION_VARS
  10. $HTTP_SESSION_VARS["bob_esponja"] = "&Eacute;l tiene pantalones cuadrados.";
  11. ?>

 

 

session_unset

(PHP 4, PHP 5)

session_unset -- Elimina todas las variables de la sesión

Descripción

void session_unset ( void )

La función session_unset() elimina y libera el espacio ocupado por todas las variables de la sesión actual registradas.

  • Nota: Si utiliza $_SESSION (o $HTTP_SESSION_VARS con PHP 4.0.6 o inferior), use unset() en su lugar para desregistrar una variable de la sesión. p.ej. $_SESSION = array();

 

 

ob_start

PHP 4, PHP 5
ob_start -- Habilitar el uso de búferes de salida

Descripción

bool ob_start ( [callback llamada_de_retorno_salida [, int tamanyo_segmento [, bool borrar]]] )

Esta función habilitará el uso de búferes de salida. Mientras los búferes de salida están activos no se envía salida desde el script (más que las cabeceras), en su lugar la salida es almacenada en un búfer interno.

Los contenidos de este búfer interno pueden ser copiados a una variable de cadena usando ob_get_contents(). Para producir la salida de lo que está almacenado en el búfer interno, use ob_end_flush(). Alternativamente, ob_end_clean() descartará silenciosamente los contenidos del búfer.

Es posible especificar una función opcional llamada_de_retorno_salida. Esta función recibe una cadena como parámetro y debe devolver una cadena. La función será llamada cuando se llame ob_end_flush(), o cuando el búfer de salida sea volcado al navegador al final de la petición. Cuando se llama output_callback, éste recibirá los contenidos del búfer de salida como su parámetro y se espera que devuelva un nuevo búfer de salida como resultado, valor que será enviado al navegador. Si la llamada_de_retorno_salida no es una función que pueda llamarse, se devolverá FALSE. Si la llamada de retorno tiene dos parámetros, el segundo parámetro es llenado con un campo de bits consistente de PHP_OUTPUT_HANDLER_START, PHP_OUTPUT_HANDLER_CONT y PHP_OUTPUT_HANDLER_END.

  • Nota:
    En PHP 4.0.4 se introdujo ob_gzhandler() para facilitar el envío de datos codificados con el algoritmo gz a navegadores web con soporte para páginas web comprimidas. ob_gzhandler() determina el tipo de contenido que aceptará el navegador y devolverá su salida acordemente.
  • Nota:
    Antes de PHP 4.3.2 esta función no devolvía FALSE en caso de que llamada_de_retorno_salida no pudiera ejecutarse.
Aviso
Algunos servidores web (p.ej. Apache) modifican el directorio de trabajo de un script cuando se ejecuta la llamada de retorno. Es posible modificarlo de vuelta p.ej. mediante chdir(dirname($_SERVER['SCRIPT_FILENAME'])) en la llamada de retorno.

 

Si se pasa el parámetro opcional tamanyo_segmento, la llamada de retorno es ejecutada en cada primera nueva línea después de tamanyo_segmento bytes de salida. El parámetro llamada_de_retorno_salida puede evitarse pasando el valor NULL.

Si el parámetro opcional borrar es definido como FALSE, el búfer no será eliminado hasta que el script finalice (a partir de PHP 4.3.0).

Los búferes de salida pueden apilarse, es decir, es posible llamar ob_start() mientras que otro ob_start() está activo. Simplemente asegúrese de llamar ob_end_flush() el número apropiado de veces. Si múltiples llamadas de retorno están activas, la salida es filtrada secuencialmente a través de cada una de ellas en orden de anidamiento.

No deben llamarse ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() ni ob_start() desde una llamada de retorno. De hacerse, el comportamiento es indefinido. Si desea eliminar los contenidos de un búfer, devuelva "" (una cadena nula) desde la llamada de retorno. No es posible siquiera llamar funciones que usen el mecanismo de búferes de salida como print_r($expresion, true) o highlight_file($nombre_archivo, true) desde una llamada de retorno.

PHP:
  1. <?php
  2.  
  3. function llamada_retorno($bufer)
  4. {
  5.   // reemplazar todas las manzanas con naranjas
  6.   return (str_replace("manzanas", "naranjas", $bufer));
  7. }
  8.  
  9. ob_start("llamada_retorno");
  10.  
  11. ?>
  12. <html>
  13. <body>
  14. <p>Es como comparar manzanas con naranjas.</p>
  15. </body>
  16. </html>
  17. <?php
  18.  
  19.  
  20. ?>

El resultado sería:

HTML:
  1. <p>Es como comparar naranjas con naranjas.</p>
  2. </body>
  3. </html>

 

Enlaces que pueden interesarte:

php.net
Todo lo que necesitas para las sesiones

Publicidad

Deja un comentario