También hay que recordar que las cookies radican en la parte del navegador y que son parte del encabezado http, razón por la cual es que se pueden controlar con php, ya que el encabezado es enviado a la parte servidor cuando se realizan las peticiones.
Que es una Sesion?
Un conjunto de variables almacenadas en el servidor; única por cada entidad
que accede a la página. Tambien es una estructura de datos almacenadas en el servidor, que ofrecen información del seguimiento del cliente, ésta información es individual para cada cliente.
Por lo general hay una cookie en la parte del navegador que identifica la sesion del servidor.
Que es una Cookie?
Una cookie es un fragmento de información que se almacena en el disco duro del visitante de una página web a través de su navegador, a petición del servidor de la página. Esta información puede ser luego recuperada por el servidor en posteriores visitas. En ocasiones también se le llama "huella".
Requisitos:
Tener corriendo el servidor apache junto con php, en caso de testear el ejemplo.
Pasos:
1) Lo primero será crear el formulario en que se loguearan los usuarios, lo vamos a llamar formulario.php, este formulario es sencillo, consta de un campo para el nombre de usuario, un campo para la contraseña y un check box para que el usuario tenga la opción de ver su nombre de usuario la próxima vez que abra la pagina, funcionalidad que la podemos observar en paginas de inicio de facebook o Hotmail cuando nos recuerdan nuestra dirección de correo electrónico, o nos muestran la foto del perfil. Las validaciones del llenado de los campos se hacen con el framework Spry que trae integrado dreamweaver, por lo tanto no se tiene que programar nada en esa parte.
formulario.php
<form id="form1" name="form1" method="post" action="controlSesion.php">
<span id="sprytextfield1"><br/>
<label id="lusuario" >Usuario:
<!--
En el campo de texto usuario se comprueba si existe alguna cookie mediante php en el navegador para poder mostrar el usuario
en el texto box que el usuario
-->
<input type="text" name="usuario" id="usuario" value="<?php if(isset($_COOKIE["cusuario"])) echo $_COOKIE["cusuario"];?>" />
</label>
<span class="textfieldRequiredMsg">Campo Es Necesario.</span></span>
<p><span id="sprytextfield2">
<label>Contraseña:
<input type="password" name="clave" id="clave" />
</label>
<span class="textfieldRequiredMsg">Campo Es Necesario.</span></span></p>
<p>
<label>
<input name="recordarme" type="checkbox" id="recordarme" checked>
Recordarme.</label>
</p>
<p>
<label>
<input type="submit" name="boton" id="boton" value="Ingresar">
</label>
</p>
</form>
<script type="text/javascript">
<!--
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1");
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2");
//-->
</script>
2) Ahora procederemos con las líneas de código que se encargaran de abrir la sesión, las cookies y a manipular los datos, posterior a que los datos sean ingresados en el formulario
//lo primero es llamar la funcion que inicializa los datos de la sesion en caso que existan o para comenzar a utilizarlos
session_start();
//asignamos a una variable de sesion(no necesariamente tiene que llamarse igual al cuadro de texto ) el nombre de usuario del cuadro de texto
$_SESSION["usuario"] = $_POST["usuario"];
// luego generamos aleatoriamente un identificador para la sesion almacenandolo igual en una variable
$_SESSION["id_sesion"] = rand(1,10000);
//validamos el check box en caso que el usuario halla decidido recordar su nombre
//lo almacenamos en una cookie con el nombre cusuario y le damos que expire en un tiempo de 30 dias
//con esto cuando abramos el navegador siempre nos va aparecer nuestro nombre de usuario
// en caso que el usuario no desee recordarse se elminira la cookie en caso que exista
if($_POST["recordarme"]) setcookie("cusuario", $_POST["usuario"], time()+60*60*24*30);
else setcookie ("cusuario", "", time() - 3600);
header("Location: index.php?id_sesion=" . $_SESSION["id_sesion"]);
?>
3) En esta parte se crea la pagina principal, index.php, que se encargara de ya sea mostrarnos el formulario para loguearse o para mostrarnos que se inicio la sesión exitosamente, cuando la sesión se inicia, el formulario no se muestra y en vez de esto aparece solamente el nombre de usuario junto a la opción de salir (la típica opción para cerrar la sesión).
lo primero desde antes que se comience a generar la salida que va a mostrar la pagina
es llamar a la funcion session_start() para inicializar las variables en caso que hallan
-->
<?php session_start();
// se comprueba si la variable salir fue pasada por la url
if(isset($_GET["salir"])){
// se comprueba si existe un identificador de sesion disponible
if(isset($_SESSION["id_sesion"]))
// se comprueba que el identificador de sesion sea igual a la variable salir pasada por la url
// en caso que sea cierto see liberan todas las variables de sesion y se eliminan todos los datos asociados a la sesion
if($_GET["salir"]==$_SESSION["id_sesion"]){
session_unset();
session_destroy();
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ejemplo: Sesiones y Cookies</title>
<!-- SpryValidationTextField.js y SpryValidationTextField.css se incluyen automaticamente cuando agregamos el control de dreamweaver
Spry Validation Text Field para el formulario de logueo.
-->
<script src="../SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<link href="../SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
<link href="estilos.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- en esta parte se verifica si existe la variable de sesion usuario, en caso que exista se muestra el nombre de usuario
de la sesion abierta y se muestra un enlace a index.php con el parametro salir en la url inicializado con el identificador de sesion
que creamos aleatoriamente al iniciar la sesion en el archivo controlSesion.php, esto con el fin de que el usuario pueda cerrar la sesion
del sitio.
en caso que la variable usuario no exista, se mostrara el formulario de logueo creado en el archivo formulario.php
-->
<?php if(isset($_SESSION["usuario"])){ ?> Bienvenido, <?php echo $_SESSION["usuario"]; ?>
, <a href="index.php?salir=<?php echo $_SESSION["id_sesion"];?>">Salir</a>
<?php }
else include("formulario.php");
?>
<p> </p>
</body>
</html>
Aplicación
Y aqui se puede correr la aplicacion. http://asotto.webuda.com/index.php
Aqui se puede descargar el ejemplo descargar
Conclusión
Con esto no se descubre la rueda pero es un sencillo ejemplo de cómo funcionan muchas de las aplicaciones que nos encontramos en internet y con las que interactuamos diariamente ya sea simplemente para revisar el correo electrónico o para accesar a alguna red social, y mas importante un ejemplo con esta tecnología tan accesible, a como lo es PHP.
0 comentarios:
Publicar un comentario en la entrada