Você está na página 1de 7

1

PHP, Gua 8
Facultad: Ingeniera
Escuela: Computacin
Asignatura: PHP

Tema: Sesiones
Contenido
En esta practica se explica el concepto de sesin, se usaran funciones de sesin para crear pginas
protegidas, y variables de sesin para almacenar datos y preferencias de los usuarios.

Objetivo Especifico

Identificar las formas en que se pueden desarrollar aplicaciones web requiriendo


autenticacin de usuarios.
Aplicar funciones de sesin para crear pginas protegidas
Crear variables de sesin para almacenar datos y preferencias de los Usuarios

Introduccion Teorica
Sesiones
La necesidad de las sesiones surge de la naturaleza del protocolo HTTP, que es un protocolo sin
estado, lo que significa que no dispone de un mtodo incorporado para conservar el estado
entre dos transacciones.
Esto es lo que provoca que cuando un usuario solicita una pgina y luego otra, no exista
manera de que el servidor entienda que ambas solicitudes provienen de un mismo usuario, de
modo que todas las variables de un script son re-establecidas siempre despus de una
solicitud.
Definicin de Sesiones
De forma simple, se puede definir una sesin como el tiempo que un usuario permanece
conectado a un sitio web. De forma ms tcnica y relacionada con programacin del lado del
servidor, una sesin es un bloque de informacin que almacena todo tipo de variables y valores
relacionados con los usuarios y sus visitas a un sitio web en particular. El control de la sesin
consiste en poder realizar un seguimiento del usuario mientras se mantenga navegando por el
sitio web, permitiendo mostrar contenido de las pginas en funcin de su nivel de autorizacin
o de sus preferencias personales
Implementar Sesiones
Los pasos bsicos para el seguimiento de una sesin son:
1. Iniciar la sesin
2. Comenzar a registrar las variables de sesin necesarias
3. Utilizar las variables de sesin en todos los scripts que lo requieran
4. Anular las variables registradas
5. Eliminar la sesin
Iniciar una Sesion en PHP
Existen dos formas de iniciar sesiones en PHP:
1. La primera es utilizando la funcin session_start( ), con la cual se puede crear un

PHP, Gua 8

identificador de sesin nuevo, o retomar un id de sesin creado previamente. Se


requiere que utilice la llamada a esta funcin al inicio de todas las secuencias de
comando que vayan a utilizar sesiones.
2. La segunda forma, consiste en configurar el archivo php.ini para que inicie sesiones de
forma automtica cuando alguien visite el sitio. Para ello se debe asignar el valor de
uno a la variable de configuracin session.auto_start, cuyo valor por defecto es cero.
Este mtodo tiene el inconveniente que no permite utilizar objetos como variables de
sesin.
Registrar una variable de sesion
Utilice la matriz superglobal $_SESSION para crear una variable de sesin. Una variable de
sesin se crea cuando se coloca como ndice de la matriz superglobal $_SESSION el nombre de
alguna variable, pero sin el smbolo de dlar. Esto es similar a como se crean variables pasadas
por la URL con la matriz superglobal $_GET o campos de formulario con el mtodo POST
utilizando la matriz superglobal $_POST.
Es preciso para poder acceder a los valores almacenados en variables de sesin iniciar el script
con una llamada a la funcin session_start( ). Si se utiliza un objeto como variable de sesin,
es preciso incluir la definicin de la clase antes de invocar a la funcin session_start( ) para
volver a cargar las variables de sesin. De esta forma PHP sabe cmo reconstruir el objeto de
sesin.
Debe prestar atencin a verificar si las variables de sesin estn registradas o no. Puede
utilizar para ello las funciones isset( ) o empty( ).
Si ya no se va a utilizar una variable de sesin es aconsejable anular su registro. Esto ayudar
a liberar recursos del servidor. Para anular el registro de una variable de sesin puede utilizar
la funcin unset.
NOTA IMPORTANTE: El uso de las funciones session_unregister() y session_unset() ya no es
necesario ni recomendable. Para anular el registro de todas las variables utilice:
$_SESSION = array();

PHP, Gua 8

Material y Equipo

Gua de laboratorio
Servidor web con interprete PHP instalado

Procedimiento
Realizar los siguientes scripts ejemplo de PHP:
1) ejemplo_1.php: logeo sin uso de arreglo session.
<?php
//usuario=user
//clave=pass
@$name = $_POST['name'];
@$password = $_POST['password'];
if(empty($name) || empty($password)){
?>
<h1>Ingrese sus datos para ingresar</h1>
Esta es una p&aacute;gina protegida
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<label for="name">
Usuario:
</label>
<input type="text" name="name"><br>
<label for="pass">
Contrasea:
</label>
<input type="password" name="password"><br>
<input type="submit" value="Entrar">
</form>
<?php
}
else if($name == 'user' && $password == 'pass'){
//El usuario y contrasea son correctos
$msgauth = "<h2 style=\"font-family:Impact;fontsize: 15pt;color:Green;\">";
$msgauth .= " Tus datos son correctos. Tienes acceso a este sitio</h2>";
echo $msgauth;
}
else{
$msgden = "<h2 style=\"font-family:Impact;fontsize:
15pt;color:Red;\">";
$msgden .= "No tienes acceso a este sitio</h2>";
echo $msgden;
}
?>
2)ejemplo_2.php: Modulo de manejo de session, inicie la prueba del ejemplo con el archivo
aplicacion.php
login.php: formulario de inicio de sesion
<?php
//usuario: php
//clave: pass
?>
<html>
<head>
<title>Autenticacin PHP</title>
</head>
<body>
<h1>Formulario de autenticacin</h1>

PHP, Gua 8
<?php
if (isset($_GET["errorusuario"])){
?>
<font color="red"><b>Datos incorrectos</b></font>
<?php
}
else{
?>
Introduce tu nombre de usuario y contrasea
<?php
}
?>
<form action="autenticacion.php" method="POST">
<table border="0">
<tr><td>Nombre de usuario:</td>
<td><input name="usuario" size="25" value="" /></td></tr>
<tr><td>Contrasea:</td>
<td><input name="contrasena" size="25" type="password" /></td></tr>
<tr><td/><td><input type="submit" value="Inicio de sesin" /></td></tr>
</table>
</form>
</body>
</html>
autenticacion.php: crea la session
<?php
session_start();
if($usuario = $_POST['usuario']=='php'&& $contrasena =
$_POST['contrasena']=='pass'){
//usuario y contrasea vlidos
//se define una sesion y se guarda el dato session_start();
$_SESSION["autenticado"] = "si";
$_SESSION["usuario"] = $_POST['usuario'];
header ("Location: aplicacion.php");
}
else{
//si no existe se va a login.php y pone el valor de error a SI
header("Location: login.php?errorusuario=si");
}
?>
seguridad.php: verifica la sesion
<?php
//Inicio la sesin
session_start();
//COMPRUEBA QUE EL USUARIO ESTA AUTENTICADO
if (!isset($_SESSION["autenticado"])){
//si el usuario no est autenticado
//redirigirlo a la pgina de inicio de sesin
header("Location: login.php");
//salimos de este script
exit();
}
?>
aplicacion.php: aplicacin a la que se accede con la sesion creada
<?php
include "seguridad.php";
?>
<html>

PHP, Gua 8

<head>
<title>Aplicacin segura</title>
</head>
<body>
<h1>Ahora ests en una aplicacin segura</h1>
<br>
<iframe src="http://phpfunctions.nfshost.com/" width="800" height="300"
scrolling="auto" frameborder="0" transparency>
<p>Ingrese a la direccion http://phpfunctions.nfshost.com/</p>
</iframe>
<br>
<br>
<a href="salir.php">Salir del sistema</a>
</body>
</html>
salir.php:cierre de la sesion
<?php
session_start();
$_SESSION = array();
session_destroy();
?>
<html>
<head>
<title>Contenido no seguro</title>
</head>
<body>
Ahora ests fuera de la aplicacin segura.
<br>
<br>
<a href="login.php">Autenticar usuario</a>
</body>
</html>

PHP, Gua 8

Ejercicios
1. Hacer una aplicacin, donde existan 5 clases de usuarios diferentes registrados, y hacer
los script necesarios para que cada uno de ellos ingrese a su propia sesin.

Tarea
1. Investigar referente al manejo de cookies en PHP y como autenticar usuarios en PHP.
2. Hacer dos script da cada investigacin del tem 1.

PHP, Gua 8

Hoja de cotejo: 8

Gua 8: Sesiones
Alumno:

Maquina No:

Docente:

GL:

Fecha:

EVALUACION
%
CONOCIMIENTO

Del
20
al
30%

APLICACIN
DEL
CONOCIMIENTO

Del
40%
al
60%

1-4

5-7

8-10

Conocimiento
deficiente de
los
fundamentos
tericos

Conocimiento
y explicacin
incompleta de
los
fundamentos
tericos

Conocimiento
completo y
explicacin
clara de los
fundamentos
tericos

No tiene
actitud
proactiva.

Actitud
propositiva y
con
propuestas no
aplicables al
contenido de
la gua.

Tiene actitud
proactiva y
sus
propuestas
son
concretas.

ACTITUD
Del
15%
al
30%

TOTAL

100%

Nota

Você também pode gostar