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