las sesiones de php se guardan en un directorio asignado del servidor donde apache se ejecuta

8
Las sesiones de PHP se guardan en un directorio asignado del servidor donde Apache se ejecuta. Generalmente este directorio es /tmp pero es posible modificarlo desde el archivo /etc/php4/apache/php.ini. Estos archivos están vinculados al usuario que navega a través de un identificador especial llamado "http://mx.php.net/session Session ID". La mayoría de las veces el usuario no se entera de que está en una sesión al navegar por un sitio en la red. Las sesiones pueden usarse para muchas cosas pero la gran mayoría de las veces se usan para establecer los derechos de un usuario en el sitio luego de logearse con un nombre de usuario y una contraseña. ¡Basta de teoría! Para empezar a trabajar una sesión en PHP lo primero es iniciarla con la función http://mx.php.net/manual/es/function.session-start.php session_start() , esta función debe estar ANTES de cualquier otra cosa. Esto es muy importante, de no colocarla antes obtendrás mensajes como: Warning: Cannot send session cookie - headers already sent by (output started at session_header_error/session_error.php:2) in session_header_error/session_error.php on line 3 Warning: Cannot send session cache limiter - headers already sent (output started at session_header_error/session_error.php:2) in session_header_error/session_error.php on line 3 Este error es producido por el siguiente código: ##<?php echo "Pablito clavo un clavito, en la calva de un calvito:<br />"; session_start(); ?> ##

Upload: carlos-chavarriaga

Post on 27-Jul-2015

901 views

Category:

Documents


2 download

DESCRIPTION

Php: inicio de sesion y seguridad

TRANSCRIPT

Las sesiones de PHP se guardan en un directorio asignado del servidor donde Apache se ejecuta. Generalmente este directorio es /tmp pero es posible modificarlo desde el archivo /etc/php4/apache/php.ini. Estos archivos estn vinculados al usuario quenavega a travs de un identificador especial llamado "http://mx.php.net/session Session ID". La mayora de las veces el usuario no se entera de que est en una sesin al navegar por un sitio en la red. Las sesiones pueden usarse para muchas cosas pero la gran mayora de las veces se usan para establecer los derechos de un usuario en el sitio luego de logearse con un nombre de usuario y una contrasea.

Basta de teora! Para empezar a trabajar una sesin en PHP lo primero es iniciarla con la funcin http://mx.php.net/manual/es/function.session-start.php session_start() , esta funcin debe estar ANTES de cualquier otra cosa. Esto es muy importante, de no colocarla antes obtendrs mensajes como:

Warning: Cannot send session cookie - headers already sent by (output started at session_header_error/session_error.php:2) in session_header_error/session_error.php on line 3 Warning: Cannot send session cache limiter - headers already sent (output started at session_header_error/session_error.php:2) in session_header_error/session_error.php on line 3 Este error es producido por el siguiente cdigo: ## ## El error ocurre porque la lnea "Pablito..." se envia antes de la funcin session_start(). La manera correcta de hacerlo sera as: ####

Inicio de seesion

Autentificacin PHP Autentificacin PHP Introduce tu clave de acceso USER: PASSWD:

Datos correctos:

User: miguel
Passwd: qwerty

Mas sessions

Las sesiones nos permiten almacenar y consultar informacin sobre un visitante sin necesidad de estar envindola a travs de formularios. Usted podra decir "eso ya lo hago con las cookies", pero el uso de las cookies es cada vez ms limitado. Muchos navegadores las deshabilitan por omisin pues guardan informacin en la computadora del usuario y esto las hace inseguras (existen varios programas hackeriles para extraer contraseas guardadas en las cookies). PHP posee un repertorio interesante de funcionalidades que nos permiten hacer todo lo que hacemos con las cookies sin guardar nada en la computadora del visitante.

Las sesiones de PHP se guardan en un directorio asignado del servidor donde Apache se ejecuta. Generalmente este directorio es /tmp pero es posible modificarlo desde el archivo /etc/php4/apache/php.ini. Estos archivos estn vinculados al usuario que navega a travs de un identificador especial llamado "Session ID". La mayora de las veces el usuario no se entera de que est en una sesin al navegar por un sitio en la red. Las sesiones pueden usarse para muchas cosas pero la gran mayora de las veces se usan para establecer los derechos de un usuario en el sitio luego de logearse con un nombre de usuario y una contrasea. Basta de teora! Para empezar a trabajar una sesin en PHP lo primero es iniciarla con la funcin session_start() , esta funcin debe estar ANTES de cualquier otra cosa. Esto es muy importante, de no colocarla antes obtendrs mensajes como: Warning: Cannot send session cookie - headers already sent by (output started at session_header_error/session_error.php:2) in session_header_error/session_error.php on line 3 Warning: Cannot send session cache limiter - headers already sent (output started at session_header_error/session_error.php:2) in session_header_error/session_error.php on line 3 Este error es producido por el siguiente cdigo:

El error ocurre porque la lnea "Pablito..." se envia antes de la funcin session_start(). La manera correcta de hacerlo sera as:

La diferencia entre mandarla antes o despus radica en que cualquier peticin http es tomada y negociada de inmediato por el Webserver. Al colocar el inicio de sesin despus de que algo le ha llegado a Apache hace imposible iniciarla pues ya ha habido un intercambio de informacin. Incluso una lnea vaca despus de

Bien, veamos un ejemplo de como decirle a PHP que inicie una sesin si el login y el password de un usuario coinciden. Primero crearemos la pgina acceso.html: :: Acceso ::
Introduzca su login :
Introduzca su contrasea :

Como puedes ver, no hay nada esotrico en este archivo HTML, solamente lo usaremos para enviar dos valores a la pgina valida.php. La cual luce as: :: Valida ::

Bien, este script inicia la sesin (las primeras dos lneas), toma las variables que enviamos del formulario:

# Voy por el login y el password $login = $_POST['login'];

Realiza una comparacin entre los valores del formulario y dos strings:if ( $login == "mmontoya" && $password == "amex05")

Esta linea quiere decir: "si la variable $login es igual a mmontoya y (&&) la variable $password es igual a amex05, haz lo siguiente". Si esta doble condicin se cumple se crea la variable de sesin "estado":$_SESSION[' estado'] = "logeado"; $_SESSION['estado'] // Coloco la variable de sesin

Si la doble condicin no se cumple (else), la variable $msg toma un valor diferente:$msg = "Datos erroneos!!. Intntelo de nuevo. ";

Destruyendo una sesinAhora bien, si la doble condicin se cumple, la pgina valida.php mostrar un link a la pgina adentro.php que es la siguiente: :: Adentro :: Tu estado de sesin es: Esta pgina simplemente i mprime el valor de la variable de sesin $_SESSION['estado']

Esta variable estar siempre a disposicin del Webmaster sin necesidad de estar colocndola oculta en un formulario o envindola en el URL de cada pgina. Con las sesiones, es muy sencillo comprobar si alguien puede ver una pgina con acceso restringido en el Website: Session rulezzz!

// largo de aqui !!

Adems de mostrar el valor de la sesin, veremos una liga a la pgina salir.php que es la pgina que nos "saca" del sitio ( logout):

Esta pgina borra las variables de sesin con la funcin session_unset() , destruye la sesin con session_destroy() y envia al usuario a la pgina de inicio con la funcin header(), es decir a acceso.html, "sacando" al usuario del sitio. Y voila!! hemos aprendido a manejar sesiones en PHP. En un prximo tutorial veremos como guardar y eliminar una sesin en una base da tos (PostgreSQL o MySQL) y no en el directorio /tmp Para que sirve esto?: Para manejar sesiones distribuidas entre varios

INICIO DE SESIN en PHP