Sei sulla pagina 1di 4

MiniPractica de sesiones en php

A cada visitante que accede a su web se le asigna un identificador nico, llamado "session id"
(identificador de sesin). ste se almacena en una cookie por parte del usuario o se propaga en
la URL.
El soporte de las sesiones le permite registrar un nmero arbitrario de variables que se c
onservarn en las siguientes peticiones. Cuando un visitante acceda a su web, PHP comprobar
automticamente (si session.auto_start est puesto a 1) o cuando usted lo especifique (de forma
explcita mendiante session_start() o implcita a travs de session_register()) si se le ha
enviado un "session id" especfico con su peticin, en cuyo caso se recrean las variables que se
haban guardado anteriormente.
Todas las variables registradas son almacenadas tras finalizar la peticin. Las variables que
estn indefinidas se marcan como no definidas. En los subsiguientes accesos, no estarn definidas
por el mdulo de sesiones a menos que el usuario las defina ms tarde.
Despues de un poco de teoria a serca de las sesiones pasamos a algo de practica
Como registrar variables en las sesiones para que esten disponibles en las paginas en las que las
queramos utilizar?
Ejemplo1
usando $HTTP_SESSION_VARS
<?php
session_start();
if (isset($HTTP_SESSION_VARS['count'])) {
$HTTP_SESSION_VARS['count']++;
}
else {
$HTTP_SESSION_VARS['count'] = 0;
}
?>
Ejemplo2
usando $_SESSION
<?php
session_start();
// Use $HTTP_SESSION_VARS con PHP 4.0.6 o inferior
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
?>
Se recomienda usar $_SESSION (o $HTTP_SESSION_VARS con PHP 4.0.6 o inferior) por seguridad y
para hacer el cdigo ms legible. Con $_SESSION o $HTTP_SESSION_VARS, no es necesario usar las
funciones session_register() / session_unregister() / session_is_registered(). Los usuarios
pueden acceder a una variable de la sesin como si se tratase de una variable normal.
Borrar una variable con $_SESSION.
<?php
session_start();
// Use $HTTP_SESSION_VARS con PHP 4.0.6 o inferior
unset($_SESSION['count']);
?>
Registrar una variable con register_globals activado
<?php
if (!session_is_registered('variable')) {
session_register("variable");
$cont = 0;
}
else {
$cont++;
}
?>
Una practica de como validar un usuario registrado en PostgreSQL
los siguientes ejemplos valida de una forma basica un usuario que se encuentra registrado
en una base de datos prueba y en la tabla usuarios para eso nos valemos de una formulario
para poder logearnos
prueba.sql
-- inicio --
-- creamos la tabla usuarios--
create table usuarios(nombre varchar(15),login varchar(15) not null primary key,clave varchar(15));
--insertamos algunos datos--
insert into usuarios values('usuario1','user1','clave1');
insert into usuarios values('usuario2','user2','clave2');
insert into usuarios values('usuario3','user3','clave3');
insert into usuarios values('usuario4','user4','clave4');
-- le damos permisos a apache sobre al tabla usuarios--
grant all on usuarios to apache;
-- fin --
formulario basico para logearnos
<form action="validar.php" method="POST">
<table width="300">
<tr>
<td bgcolor="#333333"><b>login ::</b></td>
<td>
<input type="text" name="login" class="imputbox">
</td>
</tr>
<tr>
<td bgcolor="#333333"><b>clave ::</b></td>
<td>
<div>
<input type="password" name="clave" class="imputbox">
</div>
</td>
</tr>
</table>
<input type="submit" value="Enviar Datos">
</form>
clase libg.php
<?php
/*
Clase basica para la coneccion con PostgreSQL
GULTar
edenis@uajms.edu.bo
*/
class Connection{
var $link=0;
var $result=0;
/* Constructor */
function Connection($dbname){
if (!($this->$link=pg_connect("","","","",$dbname))){
echo "Error al conectar..<br>";
exit();
}
}
/* Para realizar una consulta */
function Query($sql){
if (!$this->$link){
echo "Error: No hay conexion<br>";
exit();
}
if ( !($this->$result=pg_exec($this->$link,$sql))){
echo "Error al consultar..<br>";
exit();
}
return $this->$result;
}
function nFilas(){
return pg_numrows($this->$result);
}
/* Para liberar los canales de enlace */
function FreeAll(){
pg_free_result($this->$result);
pg_close($this->$link);
}
/* Fin */
}
?>
validar.php
Nota.- No tiene que aber ningun "echo" antes de session_register
<? session_start();
include('libg.php');
$login=$_POST['login'];
$clave=$_POST['clave'];
$o=new Connection("prueba");
$sql="SELECT nombre FROM usuarios WHERE login='$login' AND clave='$clave'";
$result=$o->Query($sql);
$nfil=pg_numrows($result);
if ($nfil==1){
$cols=pg_fetch_row($result,0);
$variable1=$cols[0];
session_register('variable1');
header('location: test.php');
}
else {
header('location: error.php');
}
?>
test.php
<?
session_start();
/* visualizamos nuestros datos registrados en session*/
$variable2=$_SESSION['variable1'];
echo "pagina 1<br>";
echo $variable2;
echo "<p />
<a href=\"test2.php\">test1</a><br>
<a href=\"test3.php\">test2</a><br>
<a href=\"test4.php\">test3</a><p />
<a href=\"index.html\">nuevo login</a><br>
<a href=\"destroy.php\">logout</a>
";
?>
test2.php, test3.php y test4.php son iguales
<?
session_start();
/* visualizamos nuestros datos registrados en session*/
$variable2=$_SESSION['variable1'];
echo "pagina 2<br>";
echo $variable2."<p />";
echo "<a href=\"test.php\">volver</a>";
?>
destroy.php
<?
session_start();
session_unset();
/*session_destroy();*/
header('location: test0.php');
?>
test0.php
<?
session_start();
/* cuando visualzamos los datos no aparecera nada porque la variable ya a sido borrada*/
$variable2=$_SESSION['variable1'];
echo "pagina 0<br>";
echo $variable2."<br>";
echo " <a href=\"index.html\">logearse</a> ";
?>

Potrebbero piacerti anche