Introducción a las Sesiones en PHP

6
Desarrollo en PHP - ADSI Rodrigo Aranda Fernández Conceptos básicos de las sesiones en PHP Las sesiones son un mecanismo para almacenar información en el servidor que permanecerá entre un acceso y otro. Al conectarse un usuario se le asigna un identificador de sesión con el que se asociará la información. Cuando se inicia una sesión en PHP comprueba automáticamente si ya existía alguna, en el caso que exista recupera toda la información de la sesión. A la información que se almacena en una sesión se le llama variable de sesión. Se crea una sesión con la función session_start(). El vector $_SESSION almacena las variables de sesión. Para destruir los datos asociados a una sesión se utiliza la función session_destoy(). Crear sesión $_SESSION['username'] = $results['username']; header('location: paginas/home.php '); exit; Recuperar Sesión session_start(); if(isset( $_SESSION['username'] )){ echo 'Bienvenido '.$_SESSION['username']; se muestra el menú }else{ Redireccionar a la página de logueo } Logout session_start(); unset($_SESSION["nombre_usuario"]); unset($_SESSION["nombre_cliente"]); session_destroy(); header("Location: index.php"); exit;

description

Introducción al manejo de Sesiones en PHP

Transcript of Introducción a las Sesiones en PHP

Page 1: Introducción a las Sesiones en PHP

Desarrollo en PHP - ADSI

Rodrigo Aranda Fernández

Conceptos básicos de las sesiones en PHP

Las sesiones son un mecanismo para almacenar información en el servidor que

permanecerá entre un acceso y otro.

Al conectarse un usuario se le asigna un identificador de sesión con el que se

asociará la información.

Cuando se inicia una sesión en PHP comprueba automáticamente si ya existía

alguna, en el caso que exista recupera toda la información de la sesión.

A la información que se almacena en una sesión se le llama variable de sesión.

Se crea una sesión con la función session_start().

El vector $_SESSION almacena las variables de sesión.

Para destruir los datos asociados a una sesión se utiliza la

función session_destoy().

Crear sesión

$_SESSION['username'] = $results['username']; header('location: paginas/home.php '); exit;

Recuperar Sesión

session_start(); if(isset( $_SESSION['username'] )){ echo 'Bienvenido '.$_SESSION['username'];

se muestra el menú }else{ Redireccionar a la página de logueo

}

Logout

session_start(); unset($_SESSION["nombre_usuario"]); unset($_SESSION["nombre_cliente"]); session_destroy(); header("Location: index.php"); exit;

Page 2: Introducción a las Sesiones en PHP

Desarrollo en PHP - ADSI

Rodrigo Aranda Fernández

$_SESSION = array(); // para limpiar todas las variables de una vez

Ejemplo

Clase para conectarse a la BD

<?php class Conexion { private static $instancia; private $dbh; private function __construct() { try { $this->dbh = new PDO('mysql:host=localhost;dbname=usuarios', 'root', ''); $this->dbh->exec("SET CHARACTER SET utf8"); } catch (PDOException $e) { print "Error!: " . $e->getMessage(); die(); } } public function prepare($sql) { return $this->dbh->prepare($sql); } public static function singletonConexion() { if (!isset(self::$instancia)) { $miclase = __CLASS__; self::$instancia = new $miclase; } return self::$instancia; } // Evita que el objeto se pueda clonar public function __clone()

Page 3: Introducción a las Sesiones en PHP

Desarrollo en PHP - ADSI

Rodrigo Aranda Fernández

{ trigger_error('La clonación de este objeto no está permitida', E_USER_ERROR); } }

Tabla a utilizar

CREATE TABLE IF NOT EXISTS 'users'( id int not null primary key auto_increment, username varchar(100) not null, password varchar(100) not null );

En la clase Login (Esto se puede realizar en e DAO)

require_once 'conexion/Conexion.php'; session_start(); class Login { private static $instancia; private $dbh; private function __construct() { $this->dbh = Conexion::singletonConexion(); } public static function singletonLogin() { if (!isset(self::$instancia)) { $miclase = __CLASS__; self::$instancia = new $miclase; } return self::$instancia; } public function validarUsuario($nick,$password) { try { $sql = "SELECT * from users WHERE username = ? AND password = ?"; $query = $this->dbh->prepare($sql);

Page 4: Introducción a las Sesiones en PHP

Desarrollo en PHP - ADSI

Rodrigo Aranda Fernández

$query->bindParam(1,$nick); $query->bindParam(2,$password); $query->execute(); $this->dbh = null; //si existe el usuario if($query->rowCount() == 1) { $fila = $query->fetch(); $_SESSION['nombre'] = $fila['nombre']; return TRUE; } }catch(PDOException $e){ print "Error!: " . $e->getMessage(); } } // Evita que el objeto se pueda clonar public function __clone() { trigger_error('La clonación de este objeto no está permitida', E_USER_ERROR); } }

Formulario

<div class="content"> <div class="caja_login"> <h2>Login en PHP</h2> <form class="form" action="Login.php" method="post"> <label>Username</label> <input type="text" name="nick" required="true" placeholder="Introduce tu usuario" /> <label>Password</label> <input type="password" name="password" required="true" placeholder="Introduce tu password" /> <input type="submit" value=" Ingresar" /> </form> </div> </div>

Page 5: Introducción a las Sesiones en PHP

Desarrollo en PHP - ADSI

Rodrigo Aranda Fernández

En el controlador:

require_once 'Login.php'; //accedemos al método singleton que es quién crea la instancia //de nuestra clase y así podemos acceder sin necesidad de //crear nuevas instancias, lo que ahorra consumo de recursos $nuevoSingleton = Login::singletonLogin(); if(isset($_POST['nick'])) { $nick = $_POST['nick']; $password = $_POST['password']; //accedemos al método usuarios y los mostramos $usuario = $nuevoSingleton->validarUsuario($nick,$password); if($usuario == TRUE) { header("Location:home.php"); } } ?>

En el home

session_start()

if(isset($_SESSION['nombre'])){

?>

<h1>Bienvenido de nuevo <?php echo $_SESSION['nombre'] ?>.</h1>

<?php

}else{

header("Location: index.php");

}

Y finalmente como cerrar sesión?

Actividades

Revisar las siguientes funciones

1. password_hash() – used to hash the password.

2. password_verify() – to verify a password with hashed password.

Page 6: Introducción a las Sesiones en PHP

Desarrollo en PHP - ADSI

Rodrigo Aranda Fernández

3. password_get_info() – Returns information of given hash.

4. password_needs_rehash() – Checks if the given hash matches the given options.

Funciones para encriptar 1. md5

2. sha1