7yyu
Páginas: 6 (1488 palabras)
Publicado: 25 de enero de 2014
Definición de la función PHP session_start
La función PHP session_start crea una sesión o reanuda la actual basada en un identificador de sesión pasado mediante una petición GET o POST, o pasado mediante una cookie.
Para usar una sesión nominada hay que utilizar la función session_name antes de llamar a session_start.Cuando session.use_trans_sid está habilidado, la función session_start registrará un gestor de salida interno para la reescritura de la URL.
Si un usuario utiliza ob_gzhandler o similar con ob_start, el orden de las funciones es importante para la salida adecuada. Por ejemplo, ob_gzhandler se debe registrar antes de iniciar una sesión.
Cómo usar session_start en nuestro sitio web
En todas las páginas de nuestro sitio webdonde necesitemos usar algún dato del usuario que ha iniciado sesión o mostrar alguna opción especial para el usuario deberemos añadir el siguiente código, siempre al principio del fichero (antes de cualquier etiqueta HTML de la página):
Con el procedimiento "session_start()" iniciaremos la sesión, si ya está iniciada no hará nada.
Registrar una variable de sesión, establecer un valor parauna variable de sesión en PHP
Para registrar una variable de sesión en versiones anteriores de PHP, se usaba la función session_register, aunque esta función no es aconsejada pues está obsoleta, a partir de PHP 5.3.0.
Para registrar una variable de sesión y establecer un valor usaremos $_SESSION["nombre_varaable"]. En el siguiente ejemplo, registramos y establecemos el valor para las variablesde sesión nombre_cliente y nombre_usuario:
$sql = "SELECT u.usuario, u.contrasena, u.idcliente, c.nombre cliente " .
" FROM usuario u, cliente c ".
" WHERE c.id=u.idcliente and usuario='" . $txtusuario . "'";
$sqlResultado = mysql_query($sql);
$row = mysql_fetch_array($sqlResultado);
$contrasena = $row["contrasena"];
$idcliente = $row["idcliente"];
if($contrasena == md5($txtcontrasena))
{
//establecermos las variables de sesión
$_SESSION["nombre_usuario"] = $row["usuario"];
$_SESSION["nombre_cliente"] = $row["cliente"];
...
El ejemplo anterior nos sirve también como método para realizar el inicio de sesión (validación) de un usuario en nuestro sitio web, mostramos la consulta SQL que se ejecutará y lacomprobación de si el usuario existe y si la contraseña introducida en el formulario (txtcontrasena) coincide con la guardada en la base de datos (contrasena una vez obtenido su hash md5).
Nota: cuando el usuario se da de alta en nuestro sitio web, guardamos el hash (md5) de la contraseña en la base de datos, usando la función de PHP: md5. Por ello, en el ejemplo anterior, cuando mostramos al usuario elformulario para iniciar sesión y éste introduce su nick y su contraseña, para comparar su contraseña con la de la base de datos, utilizamos nuevamente la función de PHP md5, para comparar el hash md5 de la contraseña introducida por el usuario con el guardado en la base de datos. Este método es el idóneo, así, ante cualquier acceso indebido a la tabla de usuarios de nuestra base de datos, sólo semostrará en el campo "contrasena" el valor del hash md5, nunca la contraseña del usuario y puesto que el hash md5 es unidireccional, de él no se puede obtener la contraseña (en teoría).
Añadir un enlace para que el usuario pueda cerrar la sesión en cualquier momento
Cuando el usuario ha iniciado sesión, siempre es recomendable añadir un enlace para que éste pueda cerrar la sesión en cualquiermomento de forma segura. Así evitaremos accesos indebidos por otros usuarios que usen el mismo equipo que el que inició sesión. En teoría, siempre que se cierre el navegador web se cerrará la sesión automáticamente, pero es aconsejable añadir este enlace para que el usuario decida cuándo cerrar la sesión.
Para añadir el enlace de "Cerrar sesión", podemos insertar el siguiente código PHP donde...
Leer documento completo
Regístrate para leer el documento completo.