Download - Intro Sesiones PHP

Transcript
  • Desarrollo en PHP - ADSI

    Rodrigo Aranda Fernndez

    Conceptos bsicos de las sesiones en PHP

    Las sesiones son un mecanismo para almacenar informacin en el servidor que

    permanecer entre un acceso y otro.

    Al conectarse un usuario se le asigna un identificador de sesin con el que se

    asociar la informacin.

    Cuando se inicia una sesin en PHP comprueba automticamente si ya exista

    alguna, en el caso que exista recupera toda la informacin de la sesin.

    A la informacin que se almacena en una sesin se le llama variable de sesin.

    Se crea una sesin con la funcin session_start().

    El vector $_SESSION almacena las variables de sesin.

    Para destruir los datos asociados a una sesin se utiliza la

    funcin session_destoy().

    Crear sesin

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

    Recuperar Sesin

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

    se muestra el men }else{ Redireccionar a la pgina de logueo

    }

    Logout

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

  • Desarrollo en PHP - ADSI

    Rodrigo Aranda Fernndez

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

    Ejemplo

    Clase para conectarse a la BD

  • Desarrollo en PHP - ADSI

    Rodrigo Aranda Fernndez

    { trigger_error('La clonacin 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);

  • Desarrollo en PHP - ADSI

    Rodrigo Aranda Fernndez

    $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 clonacin de este objeto no est permitida', E_USER_ERROR); } }

    Formulario

    Login en PHP Username Password

  • Desarrollo en PHP - ADSI

    Rodrigo Aranda Fernndez

    En el controlador:

    require_once 'Login.php'; //accedemos al mtodo singleton que es quin 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 mtodo 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'])){

    ?>

    Bienvenido de nuevo .

  • Desarrollo en PHP - ADSI

    Rodrigo Aranda Fernndez

    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