Diferencia entre revisiones de «Plantilla:PHP/Inaem/Sesiones»

De WikiEducator
Saltar a: navegación, buscar
(Creando la sesión)
(Actividades)
 
(19 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
<div class=parrafo>
+
<!--<div class=parrafo>-->
{{Conocimiento previo|Title=¿Qué son las sesiones?|
+
{{MRM_Conocimiento previo|Title=¿Qué son las sesiones?|
* Es una forma de  hacer que variables estén disponibles en múltiples páginas
+
*Una sesión es la conexión que se establece entre el cliente y servidor de forma continua.
 +
*Podríamos verla como una '''''conversación''''' entre dos partes.
 +
*Normalmente durará mientras tenga abierto  el navegador que inició conversación con un determinado servidor.
 +
*Durante ese tiempo puedo establecer variables cuyos valores estarán disponibles en el servidor para los diferentes '''scripts''' que ejecute solicitados por un determinado '''''cliente'''''.
 +
*Es una forma de  hacer que variables estén disponibles en múltiples páginas.
 +
{{Tip| Por '''''cliente''''' siempre entendemos un determinado navegador con una ip concreta.}}
 
}}
 
}}
 +
  
 
{{MRM_Pregunta|Title=Por qué necesitamos sesiones|
 
{{MRM_Pregunta|Title=Por qué necesitamos sesiones|
 
;Porque la programación web está basado en http, un protocolo sin estado.
 
;Porque la programación web está basado en http, un protocolo sin estado.
 +
*Muchas veces '''''necesitamos''''' mantener valores de variables entre diferentes scripts invocados por un mismo cliente.
 
}}
 
}}
 
===Ideas generales de las sesiones===
 
===Ideas generales de las sesiones===
  
* A diferencia de las cookies, las variables de sesión se almacenan en el servidor
+
* A diferencia de las cookies, las variables de sesión se almacenan en el '''''servidor'''''.
 
{{MRM_Pregunta|Title=Cookies|
 
{{MRM_Pregunta|Title=Cookies|
;Sabemos qué son las cookies
+
;Sabemos qué son las '''''cookies'''''.
 
}}
 
}}
 
<br />
 
<br />
 
* Tienen un tiempo limitado de existencia.
 
* Tienen un tiempo limitado de existencia.
* Para identificar al usuario que generó las variables de sesión, el servidor genera una clave única que es enviada al navegador y almacenada en una cookie.
+
* Para identificar al usuario que generó las variables de sesión, el servidor genera una clave única que es enviada al navegador y almacenada en una '''''cookie'''''.
* Luego, cada vez que el navegador solicita otra página al mismo sitio, envía esta cookie (clave única) con la cual el servidor identifica de qué navegador proviene la petición y puede rescatar de un archivo de texto las variables de sesión que se han creado.
+
* Luego, cada vez que el navegador solicita otra página al mismo sitio, envía esta '''''cookie''''' (clave única) con la cual el servidor identifica de qué navegador proviene la petición y puede rescatar de un archivo de texto las variables de sesión que se han creado.
 
* Cuando han pasado 20 minutos sin peticiones por parte de un cliente (navegador) las variables de sesión son eliminadas automáticamente (se puede configurar el entorno de PHP para variar este tiempo).
 
* Cuando han pasado 20 minutos sin peticiones por parte de un cliente (navegador) las variables de sesión son eliminadas automáticamente (se puede configurar el entorno de PHP para variar este tiempo).
* Una variable de sesión es más segura que una cookie ya que se almacena en el servidor.  
+
* Una '''variable de sesión''' es más segura que una '''cookie''' ya que se almacena en el servidor.  
 
* No tiene que estar enviándose continuamente como sucede con las cookies.  
 
* No tiene que estar enviándose continuamente como sucede con las cookies.  
 
* Cuando el navegador del cliente está configurado para desactivar las cookies las variables de sesión, tienen forma de funcionar (enviando la clave como parámetro en cada hipervínculo).
 
* Cuando el navegador del cliente está configurado para desactivar las cookies las variables de sesión, tienen forma de funcionar (enviando la clave como parámetro en cada hipervínculo).
Línea 24: Línea 31:
  
 
{{MRM_Puntos clave|Title=Dónde se almacenan|
 
{{MRM_Puntos clave|Title=Dónde se almacenan|
Las variables de sesión se almacenen en el servidor}}
+
;Las variables de sesión se almacenen en el servidor}}
  
 
===SSID de la sesión===
 
===SSID de la sesión===
Línea 37: Línea 44:
 
Existen una serie de '''''directivas''''' para configurar las sesiones, que conviene conocer. Como toda configuración tendemos a mantener su estado por defecto, lo cual es relativamente cómodo, pero no siempre práctico.  
 
Existen una serie de '''''directivas''''' para configurar las sesiones, que conviene conocer. Como toda configuración tendemos a mantener su estado por defecto, lo cual es relativamente cómodo, pero no siempre práctico.  
 
{{MRM_Pregunta|Title=Ubicación del fichero de configuración|
 
{{MRM_Pregunta|Title=Ubicación del fichero de configuración|
Dónde está el fichero de configuración de php
+
Dónde está el fichero de configuración de php.
 
}}
 
}}
 
<br />
 
<br />
*Estas se pueden consultar viendo phpinfo(), y modificar en el fichero de configuración de  php, '''''php.ini'''''
+
*Estas se pueden consultar viendo phpinfo(), y modificar en el fichero de configuración de  php, '''''php.ini'''''.
 
*Para ver todas las directivas http://es.php.net/manual/es/session.configuration.php
 
*Para ver todas las directivas http://es.php.net/manual/es/session.configuration.php
*Algunas directivas de configuración que pueden resultar de interés
+
*Algunas directivas de configuración que pueden resultar de interés:
 
;session.use_cookies
 
;session.use_cookies
 
:Indica si se deben usar cookies (1) o propagación en la URL (0) para almacenar el SID.
 
:Indica si se deben usar cookies (1) o propagación en la URL (0) para almacenar el SID.
Línea 52: Línea 59:
 
:Determina el nombre de la cookie que se utilizará para guardar el SID. Su valor por defecto es PHPSESSID.
 
:Determina el nombre de la cookie que se utilizará para guardar el SID. Su valor por defecto es PHPSESSID.
 
;session.auto_start
 
;session.auto_start
:Su valor por defecto es 0, y en este caso deberás usar la función '''''session_start()''''' para gestionar el inicio de las sesiones. Si usas sesiones en el sitio web, puede ser buena idea cambiar su valor a 1 para que PHP active de forma automática el manejo de sesiones. No obstante por seguridad mejor hacerlo de forma explícita cuando lo necesites
+
:Su valor por defecto es 0, y en este caso deberás usar la función '''''session_start()''''' para gestionar el inicio de las sesiones. Si usas sesiones en el sitio web, puede ser buena idea cambiar su valor a 1 para que PHP active de forma automática el manejo de sesiones. No obstante por seguridad mejor hacerlo de forma explícita cuando lo necesites.
 
;session.cookie_lifetime
 
;session.cookie_lifetime
 
:Si utilizas la URL para propagar el SID, éste se perderá cuando cierres tu navegador. Sin embargo, si utilizas cookies, el SID se mantendrá mientras no se destruya la cookie. En su valor por defecto (0), las cookies se destruyen cuando se cierra el navegador. Si quieres que se mantenga el SID durante más tiempo, debes indicar en esta directiva ese tiempo en segundos.
 
:Si utilizas la URL para propagar el SID, éste se perderá cuando cierres tu navegador. Sin embargo, si utilizas cookies, el SID se mantendrá mientras no se destruya la cookie. En su valor por defecto (0), las cookies se destruyen cuando se cierra el navegador. Si quieres que se mantenga el SID durante más tiempo, debes indicar en esta directiva ese tiempo en segundos.
 
;session.gc_maxlifetime
 
;session.gc_maxlifetime
 
:Indica el tiempo en segundos que se debe mantener activa la sesión, aunque no haya ninguna actividad por parte del usuario. Su valor por defecto es 1440. Es decir, pasados 24 minutos desde la última actividad por parte del usuario, se cierra su sesión automáticamente.
 
:Indica el tiempo en segundos que se debe mantener activa la sesión, aunque no haya ninguna actividad por parte del usuario. Su valor por defecto es 1440. Es decir, pasados 24 minutos desde la última actividad por parte del usuario, se cierra su sesión automáticamente.
 
 
===Creando la sesión===
 
===Creando la sesión===
 +
[[Imagen:establecer_sesion.png|800px]]<br />
 +
[[Imagen:almacenar_sesion.png|800px]]<br />
 +
<br />
 
{{MRM_Definicion|Title=Qué es una de sesión|
 
{{MRM_Definicion|Title=Qué es una de sesión|
De forma colocial
+
De forma coloquial
 
;Una sesión es la duración de la conexión que se establece entre un cliente (navegador/ip) y un servidor.
 
;Una sesión es la duración de la conexión que se establece entre un cliente (navegador/ip) y un servidor.
*Mientras dura la sesión puedo acceder a las variables de sesión establecidas
+
*Mientras dura la sesión puedo establecer variables de sesión y acceder a ellas.
*Si abro un navegador y accedo a un sitio web, se establece la sesión
+
*Si abro un navegador y accedo a un sitio web, se establece la sesión.
*Al cerrar el navegador se cierra la sesión esto es en teoría,
+
*Al cerrar el navegador se cierra la sesión (esto es en teoría).
{{Tip|A veces se queda la sesión abierta por temas de cache o de la '''''cookie''''' que mantiene el id de sesión  
+
{{Tip|A veces se queda la sesión abierta por temas de cache o de la '''''cookie''''' que mantiene el id de sesión }}
 +
}}
 +
{{MRM_Ejemplo|Title=Comparación de qué es una sesión|
 
*Por comparación es como si entrara en un centro comercial
 
*Por comparación es como si entrara en un centro comercial
 
*Mientras en estoy en él estoy dentro de mi sesión
 
*Mientras en estoy en él estoy dentro de mi sesión
Línea 71: Línea 82:
 
*Mientra estoy dentro podrían mantener información a usar en diferentes tiendas (productos comprados, pe.).
 
*Mientra estoy dentro podrían mantener información a usar en diferentes tiendas (productos comprados, pe.).
 
  }}
 
  }}
 +
====Crear y usar una sesión====
 +
*Para usar sesiones, hay que especificarlo de forma explícita.
 
*En función de cómo esté configurado la directiva '''''session.auto_start'''''
 
*En función de cómo esté configurado la directiva '''''session.auto_start'''''
 
*Si esta activada, la sesión comienza automáticamente al conectarse a un sitio
 
*Si esta activada, la sesión comienza automáticamente al conectarse a un sitio
*Si no está activada la iniciaremos con la funcion '''''session_start()''''';
+
*Si no está activada la iniciaremos con la función '''''session_start()'''''. (Esta es la opción recomendada).
 
*Un vez creada la sesión establecemos la variable y su valor en la superglobal $_SESSION
 
*Un vez creada la sesión establecemos la variable y su valor en la superglobal $_SESSION
 +
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
 
sesion_start();
 
sesion_start();
 
+
...
 
$_SESSION['nombre']='manuel';
 
$_SESSION['nombre']='manuel';
 
....
 
....
  
 
?>
 
?>
*Ahora hemos establecido la variable de sesión '''''nombre'''''
+
</source>
*De esta forma en futuras navegaciones mientras dure la sesión o conversación entre el usuario cliente y el servidor podré acceder a la variable de sesion '''nombre''' puedo acceder
+
 
*En otro fichero php podré acceder al valor del nombre del  usuario  
+
*Ahora hemos establecido la variable de sesión '''''nombre'''''.
 +
*De esta forma en futuras navegaciones mientras dure la sesión o conversación entre el usuario cliente y el servidor, podrá acceder a la variable de sesion '''nombre''' puedo acceder.
 +
*En otro fichero php podré acceder al valor del nombre del  usuario .
 +
<source lang=php>
 
<?php
 
<?php
 
sesion_start();
 
sesion_start();
Línea 91: Línea 108:
 
$usuario = $_SESSION['nombre'];
 
$usuario = $_SESSION['nombre'];
 
....
 
....
 
 
?>
 
?>
 
 
</source>
 
</source>
 
{{Tip|Una vez creada la sesión podemos almacenar/consultar información de la misma consultando la variable superglobal '''''$_SESSION'''''}}
 
{{Tip|Una vez creada la sesión podemos almacenar/consultar información de la misma consultando la variable superglobal '''''$_SESSION'''''}}
{{MRM_Actividad|Title=Programa de visitas con sesiones|
 
[[Usuario:ManuelRomero/ProgramacionWeb/php/Aut_Ses_Coo/ejercicios#Cuenta de visitas|Cuenta Visitas]]
 
}}
 
{{Tip| Cuando se hace un cambio de estado (login, cambio de permisos, ...): regenerar id.
 
  session_regenerate_id()
 
}}
 
  
 
===Eliminando la sesión===
 
===Eliminando la sesión===
Línea 110: Línea 119:
 
;session_destroy.  
 
;session_destroy.  
 
Elimina completamente la información de la sesión del dispositivo de almacenamiento.
 
Elimina completamente la información de la sesión del dispositivo de almacenamiento.
 +
{{Tip| Cuando se hace un cambio de estado (login, cambio de permisos, ...): regenerar id.
 +
  session_regenerate_id()
 +
}}
  
{{Lectura|Title=Documentación|
+
 
* http://www.php.net/manual/es/book.session.php
+
{{MRM_Lectura|Title=Documentación|
 +
* http://www.php.net/manual/es/booSek.session.php
 
* http://www.w3schools.com/php/php_sessions.asp
 
* http://www.w3schools.com/php/php_sessions.asp
 
* http://www.mclibre.org/consultar/php/lecciones/php_sesiones.html
 
* http://www.mclibre.org/consultar/php/lecciones/php_sesiones.html
 
}}
 
}}
 +
===Actividades===
 +
<br />
 +
{{MRM_Actividad|Title=Registro de acceso|
 +
*Vamos a simular un sitio web con autentificación por base de datos.
 +
*Siguiendo el esquema que se muestra
 +
[[Archivo:app_logueo1.png|800px|center]]
 +
*Al abrir la aplicación se nos pedirá que nos logueemos (usuario y password)
 +
*Para ello debe de haber una base de datos llamada '''''dwes''''' con una tabla llamada '''''usuarios''''' que tiene dos campos '''''usuario''''' y '''''pass''''' según se muestra en la imagen (crea el fichero sql para crearlo)
 +
*Debemos crear una tupla con los valores '''''dwes''''' y '''''abc123.''''' como nombre y password respectivamente (crealo en  el fichero sql)
 +
[[Archivo:tabla_usuarios.png]]
 +
*Al dar '''''Validar''''' comprobaremos si existe una tupla con esos valores
 +
*En caso de que no exista nos quedaremos en la misma pantalla con un mensaje de error que diga '''''Datos incorrectos '''''(ver imagen).
 +
*Si es correcto iremos a la pantalla '''''sitio1.php''''' donde veremos la información según se muestra
 +
*Desde ahí podemos ir a '''''sitio2.php''''' o bien '''''desconectar'''''
 +
*Debemos jugar con la variable de sesion $_SESSION['usuario'] para verificar si estamos logueados
 +
*En caso de querer acceder a '''''sitio1.php''''' o bien a '''''sitio2.php''''' sin estar logueado, iremos directamente a '''''index.php''''' con el mensaje '''''Debes loguearte''''' (ver imagen)
 +
}}
 +
 +
{{MRM_Actividad|Title=Contador de visitas|
 +
Haz un programa que cuente el número de visitas a una página en una misma sesión
 +
*A la página podremos acceder por la url o haciendo un click en un botón de tipo submit
 +
http://manuel.infenlaces.com/dwes/index.php?num_practica<nowiki>=</nowiki>8
 +
}}
 +
 +
{{MRM_Actividad|Title=Contador de accesos a una página|
 +
*Haz un programa que cuente el número de visitas a una página en una misma sesión
 +
*A la página podremos acceder por la url o haciendo un click en un botón de tipo submit
 +
http://manuel.infenlaces.com/dwes/index.php?num_practica<nowiki>=</nowiki>8
 +
}}
 +
{{MRM_Actividad|Title=Contador de acceso a un usuario|
 +
*En este caso queremos contar cuantas veces accede un determinado usuario a nuestra página
 +
*El programa visualizará en cada acceso el número total de accesos de cada usuario, indicando su nombre y número de acceso.
 +
http://manuel.infenlaces.com/dwes/index.php?num_practica<nowiki>=</nowiki>9
 +
}}
 +
{{MRM_Actividad|Title=Control de acceso|
 +
*En este caso queremos mostrar un formulario con nombre y password ("alumno", "password")
 +
*Dejamos solamente 3 intentos seguidos para acceder
 +
*En caso de el intento sea incorrecto, mostraremos un mensaje "Datos incorrectos, le quedan X intentos"
 +
*En caso de que insertemos correctamente iremos a una página llamado sitio.php donde mostraremos un mensaje de bienvenida y el nombre de la persona que accede
 +
*Desde sito.php, será posible navegar a una tercera página llamada navegando.php donde se mostrará otro mensaje con el nombre del usuario y la última hora a la que accedió
 +
*Desde la segunda página se podrá cerrar sesión, en cuyo caso deberemos de pasar a la primer página
 +
*Estas dos páginas solo deberá de ser posible acceder si nos hemos logueado, si no, no nos dejará, mostrando un mensaje y reenviándonos a la página index.php en 3 segundos.
 +
{{Plegable|hide|Css para el login|
 +
<source lang=css>
 +
#login fieldset {
 +
    position: absolute;
 +
    left: 50%;
 +
    top: 50%;
 +
    width: 230px;
 +
    margin-left: -115px;
 +
    height: 160px;
 +
    margin-top: -80px;
 +
    padding:10px;
 +
    border:1px solid #ccc;
 +
    background-color: #eee;
 +
}
 +
 +
#login legend {
 +
    font-family : Arial, sans-serif;
 +
    font-size: 1.3em;
 +
    font-weight:bold;
 +
    color:#333;
 +
}
 +
</source>}}
 +
http://manuel.infenlaces.com/dwes/index.php?num_practica<nowiki>=</nowiki>11
 +
}}
 +
 +
 +
 +
 +
  
  
</div>
+
<!--</div>-->
 +
'''''

Última revisión de 02:35 9 may 2019



Icon preknowledge.gif
¿Qué son las sesiones?
  • Una sesión es la conexión que se establece entre el cliente y servidor de forma continua.
  • Podríamos verla como una conversación entre dos partes.
  • Normalmente durará mientras tenga abierto el navegador que inició conversación con un determinado servidor.
  • Durante ese tiempo puedo establecer variables cuyos valores estarán disponibles en el servidor para los diferentes scripts que ejecute solicitados por un determinado cliente.
  • Es una forma de hacer que variables estén disponibles en múltiples páginas.
Icon present.gif
Tip: Por cliente siempre entendemos un determinado navegador con una ip concreta.







Icon qmark.gif
Por qué necesitamos sesiones
Porque la programación web está basado en http, un protocolo sin estado.
  • Muchas veces necesitamos mantener valores de variables entre diferentes scripts invocados por un mismo cliente.


Ideas generales de las sesiones

  • A diferencia de las cookies, las variables de sesión se almacenan en el servidor.



Icon qmark.gif
Cookies
Sabemos qué son las cookies.



  • Tienen un tiempo limitado de existencia.
  • Para identificar al usuario que generó las variables de sesión, el servidor genera una clave única que es enviada al navegador y almacenada en una cookie.
  • Luego, cada vez que el navegador solicita otra página al mismo sitio, envía esta cookie (clave única) con la cual el servidor identifica de qué navegador proviene la petición y puede rescatar de un archivo de texto las variables de sesión que se han creado.
  • Cuando han pasado 20 minutos sin peticiones por parte de un cliente (navegador) las variables de sesión son eliminadas automáticamente (se puede configurar el entorno de PHP para variar este tiempo).
  • Una variable de sesión es más segura que una cookie ya que se almacena en el servidor.
  • No tiene que estar enviándose continuamente como sucede con las cookies.
  • Cuando el navegador del cliente está configurado para desactivar las cookies las variables de sesión, tienen forma de funcionar (enviando la clave como parámetro en cada hipervínculo).
  • Desventaja: ocupa espacio en el servidor.



Icon key points.gif

Dónde se almacenan

Las variables de sesión se almacenen en el servidor


SSID de la sesión

Estas ideas son transparentes para el programador, no las tenemos que controlar, pero por higiene intelectual en la programación web, conviene conocer que

  • Existen dos maneras de mantener el SSID de la sesión
  1. Utilizando cookies, tema ya visto.
  2. Propagando el SID en un parámetro de la URL. El SID se añade como una parte más de la URL, de la forma:
 http://www.misitioweb.com/tienda/listado.php&PHPSESSID=34534fg4ffg34ty
  • En el ejemplo anterior, el SID es el valor del parámetro PHPSESSID.

En php todas estas acciones se realizan de forma transparente para el programador, es decir, como desarrolladores podemos directamente utilizar las sesiones en php sin necesidad de tener que transmitir el SSID. Directemente php nos ofrece supervariables y funciones para gestionarlo.

Configuración

Existen una serie de directivas para configurar las sesiones, que conviene conocer. Como toda configuración tendemos a mantener su estado por defecto, lo cual es relativamente cómodo, pero no siempre práctico.



Icon qmark.gif
Ubicación del fichero de configuración

Dónde está el fichero de configuración de php.



session.use_cookies
Indica si se deben usar cookies (1) o propagación en la URL (0) para almacenar el SID.
session.use_only_cookies
Se debe activar (1) cuando utilizas cookies para almacenar los SID, y además no quieres que se reconozcan los SID que se puedan pasar como parte de la URL (este método se puede usar para usurpar el identificador de otro usuario).
session.save_handler
Se utiliza para indicar a PHP cómo debe almacenar los datos de la sesión del usuario. Existen cuatro opciones: en ficheros (files), en memoria (mm), en una base de datos SQLite (sqlite) o utilizando para ello funciones que debe definir el programador (user). El valor por defecto (files) funcionará sin problemas en la mayoría de los casos.
session.name
Determina el nombre de la cookie que se utilizará para guardar el SID. Su valor por defecto es PHPSESSID.
session.auto_start
Su valor por defecto es 0, y en este caso deberás usar la función session_start() para gestionar el inicio de las sesiones. Si usas sesiones en el sitio web, puede ser buena idea cambiar su valor a 1 para que PHP active de forma automática el manejo de sesiones. No obstante por seguridad mejor hacerlo de forma explícita cuando lo necesites.
session.cookie_lifetime
Si utilizas la URL para propagar el SID, éste se perderá cuando cierres tu navegador. Sin embargo, si utilizas cookies, el SID se mantendrá mientras no se destruya la cookie. En su valor por defecto (0), las cookies se destruyen cuando se cierra el navegador. Si quieres que se mantenga el SID durante más tiempo, debes indicar en esta directiva ese tiempo en segundos.
session.gc_maxlifetime
Indica el tiempo en segundos que se debe mantener activa la sesión, aunque no haya ninguna actividad por parte del usuario. Su valor por defecto es 1440. Es decir, pasados 24 minutos desde la última actividad por parte del usuario, se cierra su sesión automáticamente.

Creando la sesión

Establecer sesion.png
Almacenar sesion.png


Icon define.gif
Qué es una de sesión

De forma coloquial

Una sesión es la duración de la conexión que se establece entre un cliente (navegador/ip) y un servidor.
  • Mientras dura la sesión puedo establecer variables de sesión y acceder a ellas.
  • Si abro un navegador y accedo a un sitio web, se establece la sesión.
  • Al cerrar el navegador se cierra la sesión (esto es en teoría).
Icon present.gif
Tip: A veces se queda la sesión abierta por temas de cache o de la cookie que mantiene el id de sesión




Icon casestudy.gif
Comparación de qué es una sesión
  • Por comparación es como si entrara en un centro comercial
  • Mientras en estoy en él estoy dentro de mi sesión
  • Cuando salgo se cierra la sesión
  • Mientra estoy dentro podrían mantener información a usar en diferentes tiendas (productos comprados, pe.).


Crear y usar una sesión

  • Para usar sesiones, hay que especificarlo de forma explícita.
  • En función de cómo esté configurado la directiva session.auto_start
  • Si esta activada, la sesión comienza automáticamente al conectarse a un sitio
  • Si no está activada la iniciaremos con la función session_start(). (Esta es la opción recomendada).
  • Un vez creada la sesión establecemos la variable y su valor en la superglobal $_SESSION
<?php
sesion_start();
...
$_SESSION['nombre']='manuel';
....
 
?>
  • Ahora hemos establecido la variable de sesión nombre.
  • De esta forma en futuras navegaciones mientras dure la sesión o conversación entre el usuario cliente y el servidor, podrá acceder a la variable de sesion nombre puedo acceder.
  • En otro fichero php podré acceder al valor del nombre del usuario .
<?php
sesion_start();
...
$usuario = $_SESSION['nombre'];
....
?>
Icon present.gif
Tip: Una vez creada la sesión podemos almacenar/consultar información de la misma consultando la variable superglobal $_SESSION


Eliminando la sesión

  • Se puede configurar para que de forma automática se eliminen los datos de una sesión pasados un determinado tiempo
  • También podemos actuar directamente sobre una sesión eliminando información
session_unset.
Elimina las variables almacenadas en la sesión actual, pero no elimina la información de la sesión del dispositivo de almacenamiento usado.
session_destroy.

Elimina completamente la información de la sesión del dispositivo de almacenamiento.

Icon present.gif
Tip: Cuando se hace un cambio de estado (login, cambio de permisos, ...): regenerar id.
 session_regenerate_id()




Actividades



Icon activity.jpg
Registro de acceso
  • Vamos a simular un sitio web con autentificación por base de datos.
  • Siguiendo el esquema que se muestra
App logueo1.png
  • Al abrir la aplicación se nos pedirá que nos logueemos (usuario y password)
  • Para ello debe de haber una base de datos llamada dwes con una tabla llamada usuarios que tiene dos campos usuario y pass según se muestra en la imagen (crea el fichero sql para crearlo)
  • Debemos crear una tupla con los valores dwes y abc123. como nombre y password respectivamente (crealo en el fichero sql)

Tabla usuarios.png

  • Al dar Validar comprobaremos si existe una tupla con esos valores
  • En caso de que no exista nos quedaremos en la misma pantalla con un mensaje de error que diga Datos incorrectos (ver imagen).
  • Si es correcto iremos a la pantalla sitio1.php donde veremos la información según se muestra
  • Desde ahí podemos ir a sitio2.php o bien desconectar
  • Debemos jugar con la variable de sesion $_SESSION['usuario'] para verificar si estamos logueados
  • En caso de querer acceder a sitio1.php o bien a sitio2.php sin estar logueado, iremos directamente a index.php con el mensaje Debes loguearte (ver imagen)





Icon activity.jpg
Contador de visitas

Haz un programa que cuente el número de visitas a una página en una misma sesión

  • A la página podremos acceder por la url o haciendo un click en un botón de tipo submit
http://manuel.infenlaces.com/dwes/index.php?num_practica=8





Icon activity.jpg
Contador de accesos a una página
  • Haz un programa que cuente el número de visitas a una página en una misma sesión
  • A la página podremos acceder por la url o haciendo un click en un botón de tipo submit
http://manuel.infenlaces.com/dwes/index.php?num_practica=8





Icon activity.jpg
Contador de acceso a un usuario
  • En este caso queremos contar cuantas veces accede un determinado usuario a nuestra página
  • El programa visualizará en cada acceso el número total de accesos de cada usuario, indicando su nombre y número de acceso.
http://manuel.infenlaces.com/dwes/index.php?num_practica=9





Icon activity.jpg
Control de acceso
  • En este caso queremos mostrar un formulario con nombre y password ("alumno", "password")
  • Dejamos solamente 3 intentos seguidos para acceder
  • En caso de el intento sea incorrecto, mostraremos un mensaje "Datos incorrectos, le quedan X intentos"
  • En caso de que insertemos correctamente iremos a una página llamado sitio.php donde mostraremos un mensaje de bienvenida y el nombre de la persona que accede
  • Desde sito.php, será posible navegar a una tercera página llamada navegando.php donde se mostrará otro mensaje con el nombre del usuario y la última hora a la que accedió
  • Desde la segunda página se podrá cerrar sesión, en cuyo caso deberemos de pasar a la primer página
  • Estas dos páginas solo deberá de ser posible acceder si nos hemos logueado, si no, no nos dejará, mostrando un mensaje y reenviándonos a la página index.php en 3 segundos.
http://manuel.infenlaces.com/dwes/index.php?num_practica=11