You are on page 1of 7

HTTP://WWW.TECVALLES.MX/PORTAL/INDEX.

PH
P?OPTION=COM_CONTENT&VIEW=ARTICLE&ID
=105&ITEMID=110
MANEJO DE SESIONES EN PHP
ESCRITO POR: DENKER EL 27/MAY/2010
PHP

En este post comentaremos acerca del manejo de sesiones en PHP y comenzaremos


explicando en que consiste una sesion.
Una sesion es un perodo de tiempo durante el cul, un usuario navega por
las paginas de un sitio web hasta que lo abandona.
Las sesiones nos van a permitir mantener informacin relacionada con la sesion en
todas las paginas que integran nuestro sitio.
Bien ahora vamos a ver algunas de las funciones que vamos a utilizar para el manejo
de sesiones,

session_start Crea una nueva sesion si es que no existe o retoma la sesion


existente
session_unset Elimina todas las variables de la sesin
session_destroy Destruye todos los datos guardados en una sesin

Tenemos que colocar la funcion session_start en todas nuestras paginas, pero debes
colocarla antes de enviar alguna etiqueta HTML, dato o un espacio de lo contrario te
devolvera un error.

<?php
session_start();
?>
<HTML>
<BODY>
<?php
echo "La variable de sesin es:" . SID;
?>
</BODY>
</HTML>
Una vez creada la sesion podemos utilizar la variable super global $_SESSION para
almacenar las variables que necesitamos dentro de la sesion, la sintaxis es la
siguiente:

$_SESSION["nombrevariable"]

Aqui un ejemplo

<?php
session_start () ;
?>
<HTML>
<BODY>
<?php
$_SESSION["usuario"] = "Andrea";
$_SESSION["idusuario"] = 543;
?>
</BODY>
</HTML>

Estas variables van a estar disponibles en todas las paginas en las cuales tengamos
la sesion.
Para eliminar todas las variables de sesion registradas utilizaremos la funcion
session_unset, la sintaxis es la siguiente:

<?php
session_unset();
?>

Ahora bien, si deseamos solo eliminar una variable lo haremos utilizando la funcion
unset.

<?php
unset($_SESSION["nombrevariable"]);
?>

Para eliminar la sesion utilizaremos la funcion session_destroy();

<?php
session_destroy();
?>

En siguientes tutoriales crearemos una clase para facilitar el manejo de sesiones.

FORMULARIO DE LOGIN CON PHP Y MYSQL


ESCRITO POR: DENKER EL 24/JUN/2010
PHP
En este tutorial crearemos un formulario login utilizando php y mysql. Comenzemos!!!
En un post anterior haba explicado algo del manejo de sesiones con PHP, y haba
prometido una clase que nos facilitara trabajar con sesiones, para este tutorial
utilizaremos dicha clase.

Tabla: Usuario
La informacin del usuario y contrasea la obtendremos de la tabla usuarios.
1
CREATE TABLE `usuario` (
2 `idusuario` INTEGER(11) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
3 `Nombre` VARCHAR(20) NOT NULL DEFAULT '',

4 `nick` VARCHAR(20) NOT NULL DEFAULT '',

5 `contrasenia` VARCHAR(20) NOT NULL DEFAULT '',

PRIMARY KEY (`idusuario`), UNIQUE KEY `idusuario` (`idusuario`)


6
) ENGINE=InnoDB CHARACTER SET 'latin1';
7

Archivo: sesion.class.php
1 <?php

class sesion {
2
function __construct() {
3
session_start ();
4
}
5
public function set($nombre, $valor) {
6 $_SESSION [$nombre] = $valor;
7 }
8 public function get($nombre) {

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

return $_SESSION [$nombre];


10
} else {
11
return false;
12
}
13
}
14 public function elimina_variable($nombre) {
15 unset ( $_SESSION [$nombre] );

16 }

17 public function termina_sesion() {

18 $_SESSION = array();

session_destroy ();
19
}
20
}
21
?>
22

23

24

En todos los archivos que integren nuestra aplicacin tenemos que iniciar la sesin y
lo haremos con el siguiente cdigo:
1
require_once("sesion.class.php");
2

3 $sesion = new sesion();


4

5 if( $usuario == false ) {


6 // si no se ha iniciado sesin redirecciona a la pagina login.php

7 header("Location: login.php");

8 } else {

// Aqu va el contenido de la pagina qu se mostrara en caso de que se haya inici


9
}
10
Archivo: login.php
En el archivo login.php vamos a encontrar el formulario de logeo, en dicho formulario
el usuario introducir su nick y contrasea.
1
<form name="frmLogin" action="<?php echo $_SERVER['PHP_SELF']; ?>">
2 <div>
3 <label>Usuario: </label> <input name = "usuario"/>

4 <label>Contrasea: </label> <input name = "contrasenia" />

5 <input name ="btnIniciar" value="Iniciar Sesion"/>

</div>
6
</form>
7

Una vez que el usuario haya introducido sus datos el script se procesara asi mismo.
Mediante el siguiente cdigo:
1 if( isset($_POST["iniciar"]) ) {

$usuario = $_POST["usuario"];
2
$password = $_POST["contrasenia"];
3
if(validarUsuario($usuario,$password) == true){
4
$sesion->set("usuario",$usuario);
5
header("location: principal.php");
6 } else {
7 echo "Verifica tu nombre de usuario y contrasea";
8 }

9 }

10

11 function validarUsuario($usuario, $password) {

$conexion = new mysqli("localhost","usuario","password","base");


12
$consulta = "select contrasenia from usuario where nick = '$usuario';";
13
$result = $conexion->query($consulta);
14
if($result->num_rows > 0) {
15
$fila = $result->fetch_assoc();
16 if( strcmp($password,$fila["contrasenia"]) == 0 )
17 return true;
18 else

19 return false;

} else
20
return false;
21
}
22

23

24

Se recogen los valores del formulario y se envan a la funcin validar usuario, dicha
funcin hace la consulta a la base de datos y devuelve verdadero cuando el usuario y
la contrasea sean correctos, en caso contrario devuelve falso.
Si la funcin devolvi verdadero se crea la variable de sesin usuario y se
redirecciona hacia la pgina principal.php en caso contrario muestra un mensaje para
que verifique la informacin de usuario y contrasea.

Archivo: principal.php
A esta pgina solo tendrn acceso los usuarios que se hayan logeado correctamente
de lo contrario la pagina los enviara a login.php
1 <?php
2 require_once("sesion.class.php");

3 $sesion = new sesion();

4 $usuario = $sesion->get("usuario");

if( $usuario == false ) {


5
header("Location: login.php");
6
} else {
7
?>
8
<HTML>
9
<head>
10 <title></title>
11 </head>
12 <body>

13 <h1>Hola: <?php echo $sesion->get("usuario"); ?> </h1>

14 <a href="cerrarsesion.php"> Cerrar Sesion </a>


15 <p> Aqui va el contenido de la pagina </p>

16 </body>

</HTML>
17
<?php
18
}
19
?>
20

21

Archivo: cerrarsesion.php
El archivo sesin.php se encarga de finalizar la sesin del usuario.
1
<?php
2
require_once("sesion.class.php");
3
$sesion = new sesion();
4 $usuario = $sesion->get("usuario");
5 if( $usuario == false ) {

6 header("Location: login.php");

7 } else {

8 $usuario = $sesion->get("usuario");

$sesion->termina_sesion();
9
header("location: login.php");
10
}
11
?>
12

You might also like