Vous êtes sur la page 1sur 5

Sesiones en PHP II

Describimos los metodos de trabajo con sesiones en PHP, inicializar sesin, crear variables de sesin o recuperarlas.

Las sesiones, en aplicaciones web realizadas con PHP y en el desarrollo de pginas web en general, nos sirven para almacenar informacin que se memorizar durante toda la visita de un usuario a una pgina web. Dicho de otra forma, un usuario puede ver varias pginas durante su paso por un sitio web y con sesiones podemos almacenar variables que podremos acceder en cualquiera de esas pginas. Digamos que las sesiones son una manera de guardar informacin, especfica para cada usuario, durante toda su visita. Cada usuario que entra en un sitio abre una sesin, que es independiente de la sesin de otros usuarios. En la sesin de un usuario podemos almacenar todo tipo de datos, como su nombre, productos de un hipottico carrito de la compra, preferencias de visualizacin o trabajo, pginas por las que ha pasado, etc. Todas estas informaciones se guardan en lo que denominamos variables de sesin. PHP dispone de un mtodo bastante cmodo de guardar datos en variables de sesin, y de un juego de funciones para el trabajo con sesiones y variables de sesin. Lo veremos en este artculo. Para cada usuario PHP internamente genera un identificador de sesin nico, que sirve para saber las variables de sesin que pertenecen a cada usuario. Para conservar el identificador de sesin durante toda la visita de un usuario a una pgina PHP almacena la variable de sesin en una cookie, o bien la propaga a travs de la URL. Esto se puede configurar desde el archivo php.ini. Trabajo con sesiones en PHP Cuando queremos utilizar variables de sesin en una pgina tenemos que iniciar la sesin con la siguiente funcin: session_start () Inicia una sesin para el usuario o contina la sesin que pudiera tener abierta en otras pginas. Al hacer session_start() PHP internamente recibe el identificador de sesin almacenado en la cookie o el que se enve a travs de la URL. Si no existe tal identificador se sesin, simplemente lo crea.

Nota: Si en el php.ini se ha definido la variable session.auto_start = 1 se inicializa automticamente la sesin en cada pgina que visita un usuario, sin que se tenga que hacer el session_start()

Una vez inicializada la sesin con session_start() podemos a partir de ahora utilizar variables de sesin, es decir, almacenar datos para ese usuario, que se conserven durante toda su visita o recuperar datos almacenados en pginas que haya podido visitar. La sesin se tiene que inicializar antes de escribir cualquier texto en la pgina. Esto es importante y de no hacerlo as corremos el riesgo de recibir un error, porque al iniciar la sesin se deben leer las cookies del usuario, algo que no se puede hacer si ya se han enviado las cabeceras del HTTP.

Nota: si se intenta abrir una sesin despus de haber enviado texto de la pgina al cliente se obtendr el siguiente mensaje: Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at )

Una vez iniciada la sesin podemos utilizar variables de sesin a travs de $_SESSION, que es un array asociativo, donde se accede a cada variable a partir de su nombre, de este modo: $_SESSION["nombre_de_variable"]

Nota: $_SESSION es una variable global que existe a partir de PHP 4.1.0. Lo normal es que podamos acceder a esa variable normalmente, pero si nuestra versin de PHP no est actualizada podemos intentarlo con $HTTP_SESSION_VARS, que es tambin un array asociativo, aunque no es de mbito global. Si $HTTP_SESSION_VARS tampoco funciona tendremos que registrar cada variable por separado con la funcin session_register(), envindo por parmetro los nombres de las variables de sesin que desea utilizar desde PHP.

Existen otras dos configuraciones del php.ini que afectan al trabajo con variables de sesin, que son track_vars y register_globals. Por defecto track_vars est activado y register_globals est desactivado. Este es el caso normal y el que suponemos tendr el servidor donde programes, pero si esas variables cambian podra cambiar alguna cosita, como que las variables se tengan que registrar explcitamente con session_register(). Ejemplo de cdigo para definir una variable de sesin:

<? session_start(); ?> <html> <head> <title>Generar variable de sesin</title> </head> <body> <? $_SESSION["mivariabledesesion"] = "Hola este es el valor de la variable de sesin"; ?> </body> </html> Como se puede ver, es importante inicializar la sesin antes de hacer otra cosa en la pgina. Luego podremos definir variables de sesin en culquier lugar del cdigo PHP de la pgina. Para leer una variable de sesin se hace a travs del mismo array asociativo $_SESSION. Es tan sencillo como haramos para utilizar cualquier otra variable, lo nico es que tenemos que haber inicializado la sesin previamente. Y por supuesto, que la variable que deseamos acceder exista previamente. <? session_start(); ?> <html> <head> <title>Leo variable se sesin</title> </head> <body> Muestro esa variable: <? echo $_SESSION["mivariabledesesion"]; ?> </body> </html> Como se puede ver, al inicio del cdigo hemos inicializado la sesin y luego en cualquier parte del cdigo podramos acceder a las variables de sesin que tuvisemos creadas.

Nota: si intentamos acceder a una variable de sesin con $_SESSION que no ha sido creada obtendremos otro mensaje de error: Notice: Undefined index: mivariabledesesion, que es el mismo que si intentamos acceder a cualquier elemento de un array que no existe.

Ms sobre sesiones en PHP La siguiente informacin sobre sesiones de PHP tambin puede ser de til lectura. No obstante lo expresado hasta aqu es una informacin mucho ms actualizada. En las prximas lneas se explican mecanismos para sesiones pero todos los que se comentan, aunque son vlidos, no son actuales por tratarse de explicaciones para versiones de PHP ms antiguas. Hemos dicho en el captulo anterior que la variables de sesin se diferencian de las variables clsicas en que stas residen en el servidor, son especificas de un solo usuario definido por un identificador y pueden ser utilizadas en la globalidad de nuestras pginas. Para iniciar una sesin podemos hacerlo de dos formas distintas: -Declaramos abiertamente la apertura de sesin por medio de la funcin session_start(). Esta funcin crea una nueva sesin para un nuevo visitante o bien recupera la que est siendo llevada a cabo. -Declaramos una variable de sesin por medio de la funcin session_register('variable'). Esta funcin, adems de crear o recuperar la sesin para la pgina en la que se incluye tambin sirve para introducir una nueva variable de tipo sesin. Las sesiones han de ser iniciadas al principio de nuestro script. Antes de abrir cualquier etiqueta o de imprimir cualquier cosa. En caso contrario recibiremos un error. Con lo visto, vamos a proponer el ejemplo clsico de utilizacin de una sesin: un contador. Este contador deber aumentar de una unidad cada vez que recargamos la pgina o apretamos al enlace:

<? session_register('contador'); ?> <HTML> <HEAD> <TITLE>contador.php</TITLE> </HEAD> <BODY> <? If (isset($contador)==0) {$contador=0;} ++$contador; echo "<a href=\"contador.php\">Has recargado esta pgina $contador veces</a>";

?> </BODY> </HTML> Ejecutar script La condicin if tiene en cuenta la posibilidad de que la variable $contador no haya sido todava inicializada. La funcin isset se encarga de dar un valor cero cuando una variable no ha sido inicializada. Otras funciones tiles para la gestin de sesiones son:

Funcin Session_id() Session_destroy()

Descripcin Nos devuelve el identificador de la sesin Da por abandonada la sesin eliminando variables e identificador.

Session_unregister('variable') Abandona una variable sesin

Vous aimerez peut-être aussi