PHP: uso de sesiones
Articles,  Blog

PHP: uso de sesiones


hola soy sergio luján mora profesor de informática de la universidad de alicante y en este vídeo que forma parte del curso introducción al desarrollo web te voy a mostrar un ejemplo sencillo de uso de las sesiones en php antes de empezar me gustaría recordarte algunos de los sitios web en los que puedes encontrar más información sobre mí y sobre mi trabajo y dos formas de contactar conmigo a través de mi correo electrónico en sergio luján ua punto es y a través de mi cuenta en twitter arroba sergio luján mora si no lo has visto aún o no lo recuerdas te aconsejo que antes de ver este vídeo consultes el vídeo php sesiones en el que se define el concepto de sesión en este vídeo vamos a ver un ejemplo sencillo de uso de sesiones con php el ejemplo comienza con dos páginas en la página uno se muestra un formulario con un campo de tipo texto en el que el usuario debe introducir su nombre al pulsar en el botón enviar el formulario se envía a una segunda página en la que se muestra el nombre que ha introducido el usuario cuando el usuario vuelva a la página 1 no se le volverá a pedir el nombre ya que su nombre ya lo conocemos sin embargo se le mostrará un botón para salir para que olvidemos su nombre cuando el usuario pulse el botón salir se mandará una petición a una tercera página para que se destruya la sesión después de destruir la sesión si el usuario vuelve a la página uno se volverá a pedir su nombre ya que se volverá al estado inicial vamos a ver el código de este ejemplo ya he creado las tres páginas el esqueleto de las tres páginas para que el vídeo no se haga muy largo por un lado tenemos la página uno que contiene el formulario en el formulario hay un cuadro de tipo texto le he puesto de nombre nombre y el botón enviar el formulario se envía a la página 2 en la página 2 por ahora lo único que hacemos es recoger y mostrar el nombre que se recibe en la página 3 por ahora tampoco se hace mucho simplemente tengo ya las cadenas que quiero mostrar si nos vamos a un navegador podemos probar las páginas aquí tengo la página 1 con el formulario y he puesto también un enlace para ir a la página 2 fíjate como si ahora voy a la página 2 se va a mostrar un mensaje de error me dice que en la línea 11 hay un error porque se está intentando acceder a un índice que no está definido a nombre en concreto el error aquí en la página 2 en la línea 11 es porque estoy intentando acceder a la variable super globe al dólar subrayado post a la posición nombre que no existe ya que no se ha enviado el formulario vamos a volver a la página 1 y ahora vamos a enviar correctamente el formulario por ejemplo pongo sergio le doy a enviar y aparece el nombre sergio sin embargo será vuelvo a la página 1 y vuelvo otra vez a la página 2 el nombre no existe porque no se ha vuelto a enviar el formulario lo que queremos es de alguna forma mantener ese nombre cuando pasemos de la página 1 a la página 2 y eso lo vamos a hacer con las sesiones así que me voy a la página 2 y aquí cuando recibimos el nombre voy a iniciar la gestión de las sesiones para ello se emplea el método session start y ahora puedo en la sesión almacenar lo que yo quiera en concreto en la variable es súper global sesión voy a almacenar en una posición llamada nombre el nombre que me pasa y ahora ya entre todas las páginas donde haga uso de la sesión tendré disponible esta sesión y ahora lo que voy a hacer es en la página 1 acuerdo a la página en la página 1 voy a hacer lo siguiente tengo que detectar si tengo o no el nombre si no tengo el nombre tengo que mostrar el formulario pero si ya tengo el nombre en la sesión no tengo que mostrar el formulario sino mostrar el nombre así que aquí abro código y php como siempre lo primero es inicializar la gestión de sesiones y ahora voy a ver si existe o no existe el nombre en la sesión para ello empleó el método is set si existe esto sí está definido esta posición en sesión entonces lo que voy a hacer es ejecutar el siguiente código y fíjate lo que voy a hacer eco y aquí muestro pues el nombre la sesión pero si no está definido el nombre entonces voy a mostrar el formulario y fíjate lo que hago cierro el código php y a continuación puedo poner código html sin problemas pero ahora tengo que cerrar el elche que me lo ha dejado abierto así que vuelvo a abrir el código php y tengo que cerrar el el ser simplemente poner esta llave para emparejar la con ésta bien lo vamos a probar y ya te aviso que va a fallar vamos a ver porque bien después de cada cambio en el código recuerda que hay que recargar la página y aquí me aparece el error que me está diciendo el error me dice advertencia sesión estar no puede enviar la cookie de la sesión porque los encabezados ya han sido enviados este mensaje ya deberías de entenderlo porque este mensaje prácticamente el mismo es el que aparece cuando intentas modificar una cookie en un sitio en el que no debes lo recuerdas eso ya lo explique en otro vídeo y que tienen que ver aquí las cookies pues recuerda que las sesiones en php y en la mayoría de las tecnologías de programación del lado del servidor se implementan con las cookies es decir cuando yo aquí estoy haciendo sesión estar en el código se va a enviar una cookie por tanto esto lo tenemos que hacer siempre al principio del código no lo podemos hacer a la mitad del código como lo estoy haciendo aquí luego sí que puedo yo trabajar con la sesión en cualquier punto del código porque la sesión se almacenará en el servidor no hay ningún problema pero el sesión start tiene que ser siempre la primera línea del código por tanto lo voy a cortar de aquí y me lo voy a llevar al principio tiene que ser lo primero de lo primero y por tanto aquí escribo php pegó el session start y lo mismo tengo que hacer en página 2 así que como ya lo escrito aquí lo copio y lo pegó al principio del fichero en página 2 y bueno como lo voy a necesitar también en página 3 pues ya que estamos lo pego en página 2 pues lo voy a quitar de aquí y ahora ya queda mejor el código bien vamos a probarlo de nuevo quería recargar ya ha desaparecido el mensaje de error pongo sergio otra vez le voy a enviar en la página 2 no me aparece ningún mensaje de error me parece que tu nombre es sergio y ahora se supone que sergio debe de estar almacenado en la sesión por tanto cuando ahora vaya a la página 1 se debe de detectar que hay un nombre en la sesión y no me no tiene que volver a pedir vamos a verlo y efectivamente ahí aparece mi nombre bueno queda un poco frío vamos a ponerle aquí algo más tu nombre ya lo sé sergio y ya sale un poco mejor y cuando vayamos a la página 2 qué ocurrirá fallara o no fallara pues vamos a ver el código y veremos que va a fallar porque otra vez va a intentar hacer esto vamos a verlo y hay fallar por tanto debemos de hacer aquí algo para cuando vayamos a la página 2 detectar si nos están enviando o no el nombre y eso como lo hacemos pues otra vez con el isset por tanto vengo aquí y set me están enviando un nombre pues entonces haré lo siguiente me guardaré el nuevo nombre en la sesión y lo mostraré pero sí no pues entonces veré a ver si ya tengo un nombre donde en sesión nombre y entonces lo mostraré sí 7 se si el nombre pues entonces mostraré es el hombre y si no pues muestra un mensaje de error el pse y digo pues no tengo nombre bien vamos a probarlo me voy a página 1 bueno la página 2 y tu nombre es no tengo nombre vamos a probar sergio enviar tu nombre sergio página 11 mar ya lo sé es sergio y página 2 tu nombre es sergio ya funciona bien ahora lo que tenemos que añadir es en página 1 un botón para poder destruir la sesión por tanto nos venimos aquí a página 1 y cuando ya sabemos el nombre de la persona es decir aquí tu nombre ya lo sé tal pues vamos a mostrar un botón o en este caso lo voy a hacer con un enlace que es más sencillo entonces mostramos co y voy a poner un enlace a la página 3 página 3 puntos de hp y le pongo salir bueno como aquí tengo comillas dobles tengo que poner aquí comillas simples vamos a probarlo le doy a recargar me sale el enlace salir y de aquí vamos a la página 3 que se supone que tiene que salir pero no es verdad aún no estamos saliendo porque aún no he escrito el código volvemos a la página 1 salir página 1 salir página 1 bien nos falta ya el código para la página 3 y como salimos como destruimos la sesión bien eso se hace con un método llamado session ‘destroyed’ que borrar la sesión fíjate como ahora cuando le doy a salir y vuelvo a la página 1 me vuelve a pedir el nombre porque porque efectivamente se ha realizado el sesión de estro y se ha destruido la sesión y al volver a la página uno inicial izamos la sesión pero va a ser una sesión nueva y por tanto no tenemos el nombre del usuario vamos a volver a aprobarlo sergio enviar estoy en la página 2 página 1 página 2 página 1 página 2 página 1 pero cuando le dé a salir ya ha salido se ha destruido la sesión y al volver a la página uno me pide otra vez el nombre bien como curiosidad donde se almacenan las sesiones en php por defecto se almacenan en el directorio samp tmp en el directorio temporal y aquí se creara un fichero por cada sesión por cada usuario que esté conectado ahora mismo este fichero está vamos a ver está vacío porque no entrado en la sesión pero si entro de nuevo y pongo por ejemplo ahora sergio luján mora le doy a enviar si vuelvo aquí ahora sí que tenemos un fichero con un tamaño y si le doy a editar podemos ver que aparece lo que yo he escrito con algunos datos más aparece el campo la variable que se está almacenando en la sesión la cadena aquí se está realizando es decir se está convirtiendo en una línea de caracteres lo que se está almacenando en la sesión interesante verdad y bueno con esto termina este vídeo en el que he mostrado un ejemplo de uso de las sesiones con php recuerda que este vídeo forma parte del curso introducción al desarrollo web que está disponible en la dirección y des web punto es muchas gracias por tu atención

22 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *