_CURSO DE PHP CAPITULO 1
_VARIABLES EN PHP 5
_OPERADORES
_ESTRUCTURAS DE CONTROL
_FUNCIONES
_CADENAS - CARACTERES
_CONJUNTO DE DATOS DE TIPO ARRAY
_PASO DE INFORMACIÓN ENTRE FORMULARIOS
_PROGRAMACIÓN ORIENTADA A OBJETOS
_ARCHIVOS Y ALMACENAMIENTO DE DATOS
_BASE DE DATOS CON MYSQL _
_SESIONES Y COOKIES
_LECTURA Y ESCRITURA DE ARCHIVOS XML
_APLICACIONES PRACTICAS DE XML
_GESTION DE ERRORES CON PHP 5
_CONEXIONES DESDE PHP 5
_CREACION DE ARCHIVOS PDF
 

CURSO DE PHP Y MYSQL GRATIS


Introducción

Una sesión es un período de tiempo durante el cuál, una persona determinada
ve un número de diferentes páginas Web de un determinado dominio.

El protocolo HTTP no tiene forma alguna de distinguir un usuario que
se conecte desde España de otro que se conecte desde Japón. PHP 5 provee
un mecanismo que permite añadir cierto nivel de diferenciación entre
usuarios.

Miremos un ejemplo:

<HTML>
<BODY>
<?php
switch ($_GET["opción" ] ) {
case 1 :
echo "La opción es 1";
break;
case 2 :
echo "La opción es 2" ;
break;
case 3 :
echo "La opción es 3";
break;
}
?>
</BODY>
</HTML>

Esta página elige una de las opciones en función del parámetro GET que
obtenga. Como ya sabe, GET pasa todos los valores junto a la dirección
Web y es visible para nosotros.

El método GET no es muy funcional cuando necesite pasar datos comprometidos
a través de varias páginas Web. POST resuelve en parte este problema.

Este método permite pasar entre páginas las variables que quiera, quedando
ocultas para el usuario. A priori parece una buena forma de ocultar
datos, pero nos encontramos que es necesario un formulario en cada
página para utilizarla.

Las sesiones y las variables de sesión permiten pasar datos entre páginas,
sin necesidad de utilizar formularios y es la mejor forma para ocultar datos
comprometidos.

Sesiones en PHP 5

Las sesiones deben soportar:

• Detectar que durante el transcurso de la navegación por varias páginas
Web, la sesión permanece invariable.

• Almacenar información que formará parte de una sesión en concreto.
PHP trabaja con una combinación de métodos que son capaces de ocultar
variables y cookies, de las que hablaremos en un apartado posterior.

Instanciando sesiones
El primer paso que nuestro script debe realizar es la llamada a la función
s e s s i o n _ s t a r t () . Esta función registra una sesión en el servidor y la
identifica con una cadena de 32 caracteres. Cada persona que entre en ese
mismo instante en la Web desde un ordenador diferente, obtendrá un identificador
distinto.

La función s e s s i o n _ s t a r t () debe incluirse en todas las páginas Web
que formen parte de la aplicación, porque no sólo se encarga de inicializar
la sesión, sino que también se encarga de mantener la misma sesión
durante el proceso. La función actúa de la siguiente forma:

• Si no existe una sesión activa, crea una nueva con un identificador.
• Si existe una sesión que puede ser recuperada, se extrae la sesión y las
variables asociadas.

<?php
session_start();
?>
<HTML>
<BODY>
<?php
echo "La variable de sesión es:" . SID;
?>
</BODY>
</HTML>

En el momento en que el script escribe cualquier cosa, el servidor termina de enviar las cabeceras HTTP y empieza a enviar el contenido. No se puede enviar una nueva cabecera cuando ya estamos enviando el cuerpo de la Web. Puesto que la función
s e s s i o n _ s t a r t () utiliza cabeceras para pasar la información de sesión.

La primera vez que instanciamos una sesión, sé crea una constante llamada
S ID que contiene el identificador de 32 caracteres que nos identifica.

Variables de sesión
Existe una variable súper-global, que se encarga de almacenar las variables
que quiere pasar entre páginas de una sesión. El array $_SESSION
permite almacenar datos de cualquier tipo para recuperarlos en otras páginas
que tengan la misma sesión. El código para propagar variables de
sesión puede ser tan sencillo como la página s e s i o n l . php:

<?php
session_start () ;
?>
<HTML>
<BODY>

<?php
$_SESSION["nombre"] = "Luis Miguel Caberas";
$_SESSION["edad"] = 29;
echo "<a href = \ " sesion2.php\">Pasar variables</a>" ;
?>

</BODY>
</HTML>
La. va.tva.bie súpex-^tóbal almacena. valores de. d'-feteate tupo, y creamas. UTJ.
enlace a la página s e s i o n 2 .php para poder recuperarlos:
<?php
session_start () ;
?>
<HTML>
<BODY>
<?php
echo "Mostrar las variables de sesión<bí>";
foreach ($_SESSION as $indice => $valor) {
echo "$indice: $valor<br>";
}
echo "Mostrar las COOKIES<br>" ;
foreach ($_COOKIE as $indice => $valor) {
echo "$indice: $valor<br>" ;
}
?>
</BODY>
</HTML>

Problemas con los navegadores
Un problema muy común es que el usuario tenga, por razones de seguridad,
desactivada la opción de permitir c o o k i e s en su navegador. El problema
es que el ordenador local no va a aceptar nuestra
variable PHPSESSID y todas las páginas creerán que no existe sesión
activa y no podrán recuperar las variables. Se puede resolver con unas
pocas líneas de código para la página s e s i o n l . php :

<?php
session_start();
?>
<HTML>
<BODY>
<?php
$_SESSION["nombre"] = "Luis Miguel Cabezas";
$_SESSION["edad"] = 29;
$id_sesion = SID;
echo "<a href=\"sesion2.php?$id_sesion\">Pasar variables</a>" ;
?>

</BODY>
</HTML>

Esta forma de trabajar implica tener que pasar en todos los enlaces el identificador
de sesión. La forma correcta de hacerlo es la que muestra el ejemplo,
ya que produce una URL de este tipo: s e s i o n 2 . php?PHPSESSID =
9 0 9 7 c 4 3 a a 8 6 d 3 4 5 9 b l 6 6 d 7 1 c 4 e a 4 c 9 3 0 .

Nota:
Si quiere que PHP sea transparente manejando el paso de variables
a través de c o o k i e s o vía el método GET, necesita tener
configurado PHP 5 con las directivas - e n a b l e - t r a n s - s id
y - e n a b l e - t r a c k - v a r s . Si estas opciones no están activadas,
el único trámite para utilizar variables es pasar mediante GET
o POST el identificado!' de sesión corno en el ejemplo anterior.

Funciones para el manejo de sesiones
La tabla 13.1 muestra algunas funciones interesantes con la descripción
de uso.


1.- session_start() .- Inicia una sesión y permite almacenar variables en la estructura $_SESSION.

2.-
session_destroy() .- Elimina todas las variables de sesión.

3.-
session_name().- Devuelve el nombre de la sesión, normalmente PHPSESSID.

4.-
session_id().- Devuelve los 32 caracteres que forman el identificador de
sesión.


Con las funciones relacionadas en la tabla anterior, podemos construir un
objeto que nos facilite el manejo de sesiones en nuestras aplicaciones.

<?php
class sesión
{
function constructor()
{
session_start();
}
public function set($nombre,$valor)
{
$_SESSION[$nombre] = $valor;
}
public function get($nombre)
{
if (isset ($_SESSION[$nombre] ) ) {
return $_SESSION[$nombre];
} else {
return false;
}
}
public function borrar_variable($nombre)
{
unset ($_SESSION[$nombre] ) ;
}
public function borrarsesíon()
{
$_SESSION = arrayO ;
s e s s i o n _ d e s t r o y ( ) ;
}
}
?>

Las páginas s e s i o n l .php y s e s i o n 2 . php pueden manejarse ahora con
la clase que hemos creado de la siguiente forma:

<?php
require_once ("clase__sesion .php") ;
$sesión = new sesión();
?>
<HTML>
<BODY>
<?php
$sesión->set("nombre","Luis Miguel Cabezas");
$sesión->set("edad",29);
$id_sesion = SID;
echo "<a href=\"sesion2.php?$id_sesion\">Pasar variables</a>";
?>
</BODY>
</HTML>

Cookies
Una cookie es una pequeña parte de información que queda almacenada en el ordenador local de los usuarios de una página Web. Debe contener
siempre un nombre y un valor. Es muy usual utilizar cookies para guardar
preferencias de cada usuario en el uso de una Web, pero hay que tener
cuidado con el número de variables que se pueden almacenar, pues normalmente
hay un máximo de 20 por dominio, según el navegador.

En PHP 5 la función s e t c o o k i e () se encarga de registrar las cookies
durante el envío de las cabeceras. Para recuperar el valor, tiene que
utilizar la variable súper-global $_COOKIE.

setcookie()
La función s e t c o o k i e () normalmente tiene 2 argumentos, el nombre
de la variable y el valor. Además, podemos pasar varios parámetros que
permiten dar un tiempo de vida a las variables, asociar un dominio o asegurar
el envío mediante HTTPS.

Argumento
Tipo
Descripción
nombre carácter El nombre de la variable cookie.
valor carácter El valor que debe almacenar la variable. Si este
valor no se indica, la cookie será automáticamente
borrada
tiempo de vida entero Indica el tiempo de vida de unacookie. Si el valor
es 0, la variable nunca expirará. Si indica un
número entero, tendrá el tiempo que la variable
permanecerá activa. El valor hay que asignarlo
en tiempo absoluto (como el devuelto por la
función mktime ()).
ruta entero Permite distinguir entre dos variables con el
mismo nombre, pero llamadas desde distinta
ruta en el servidor. La cookie "nombre" llamada
desde la ruta /foro será distinta a la cookie
"nombre" llamada desde la ruta /usuario.
dominio carácter Asegura el dominio de servidor que puede leerla
cookie.
Secure entero (0
ó 1)
Si el argumento es 1, la cookie sólo será enviada
a través de una conexión segura HTTPS.

Borrar una cookie
Borrar una cookie es fácil. Si llama a la función s e t c o o k i e () con los mismos
argumentos que para habilitarla, excepto el valor, la variable se eliminará
del sistema local del usuario. Si usa los parámetros r u t a y dominio,
deben aparecer también, y con los mismos valores.

Como de costumbre, vamos a implementar una pequeña clase para manejar
las cookies:

<?php
class Cookie
{
function constructor()
{
//El constructor no hace nada
}
public function set($nombre,$valor,$expire=0,$ruta="
",$dominio="",$seguro=0)
{
setcookie($nombre,$valor,$expire,$ruta,$dominio,$seguro);
}
public function get($nombre)
{
if (isset ($_COOKIE [$nombre] )) {
return $_COOKIE[$nombre];
} else {
return false;
}
}
public function borrar_cookie($nombre)
{
setcookie($nombre,$valor,$expire,$ruta,$dominio,$seguro!;
}
}
?>

El argumento "tiempo de vida", debe proporcionarse en valor de tiempo
absoluto. Esto a veces puede resultar incómodo y sería más sencillo proporcionar el tiempo de vida de la variable en minutos o segundos. La
clase anterior solicita el tiempo en segundos y se encarga de añadir esos
segundos al valor absoluto haciendo más simple la asignación.

Para ver cómo funciona, podemos utilizar la Web c o o k i e l .php:

<?php
require_once("clase_cookie.php");
$cookie = new CookieO;
$cookie->set("nombre","Luis Miguel",10) ;
?>
<HTML>
<BODY>
<?php
echo "La COOKIE es: " . $cookie->get("nombre");
echo "<a href = \ "cookie2.php\">Pasar variables</a>" ;
?>
</BODY>
</HTML>
Como puede ver es muy sencilla la asignación de cookies y su recuperación.

Cabeceras HTTP
Las funciones s e t c o o k í e () o s e s s i o n _ s t a r t () introducen su contenido
en una cabecera HTTP sin necesidad de especificación por el usuario.

Es posible enviar cabeceras desde PHP con la utilización de la función
header () . La función h e a d e r () es muy simple; tan sólo toma como argumento
un conjunto de caracteres que será la cabecera a enviar. Por ejemplo,
una forma muy útil de redirigir una página a otra es utilizando la
cabecera "Location:".

< ?php
if (isset($_GET["usuario"] ) && $_GET["usuario"] == "Luis") {
header("Location: http://www.luisyfernanda.net") ;
}
?>
<html>
<body>
Si ve esta página, su nombre no es Luis
</body>
</html>

Este script evalúa si en la variable súper-global $_GET existe un identificador
llamado u s u a r i o y si su valor es L u i s . En caso afirmativo se envía
la cabecera al navegador, que invita a cargar la Web especificada. En caso negativo, se envía la página Web que hay después de la estructura if.

Este tipo de uso de las cabeceras puede servir para redireccionar a una
página de error cuando un usuario intente entrar sin permiso o cometa
un fallo en la entrada de un nombre o correo electrónico.

Resumen
Las sesiones resuelven los problemas muy comunes de seguridad. El uso
conjunto de sesiones cookies y cabeceras HTTP permiten un control absoluto
sobre las variables de la aplicación. Casi todos los programas que
necesitan autentificar un usuario (como una tienda on-line) se sirven de
estas técnicas.

Pero el lector no debe quedarse aquí, hay muchas cabeceras distintas que
pueden ser útiles en diferentes momentos, como la autenticación vía HTTP.

 
|
|
|
|
|
Se realiza diseño de páginas webs, curso de diseño de páginas web, cursos PHP, cursos flash, posicionamiento web, venta de hosting y dominios.

© Copyright socioscreativos 2009 Todos los Derechos Reservados
Av. La Marina 2553 Segundo Piso Of. 204 Teléfono: 4019750 - Celular 992723392