Control de Sesiones
Hola,
Tengo entre manos montar un panel de gestión de productos para que nuestros clientes puedan consultar las características de lo que tienen contratado, etc...
El problema me surge en el control de sesiones, es la primera vez que me enfrento a esto y estoy más perdido que Jennifer Connelly en "Labyrinth" :oops:
Me he leído la documentación de php sobre el uso de sesiones pero me resulta insuficiente (eso de contar el numero de veces que alguien entra en la página está muy bien pero no me vale :P), ¿Alguien tiene alguna URL con tutoriales serios sobre este tema? O algún libro que pueda consultar.
Saludos!
PD: Para esto, ¿Se usan normalmente las PHPLib? Porque las estoy mirando y me resultan un tanto confusas... :-(
jfm77
:oops: Yo se de alguien que me va a matar...
14-AGO-2003, orange
Pues tron, me pillas que no me lo sé de cabeza.
Aqui tienes el enlace a los artículos sobre sesiones PHPBuilder, que en estas cosas suelen tener cosas majas
http://www.phpbuilder.net/columns/index.php3?cat=6&subcat=36
Incluso tienen uno sobre autentificación utilizando la PHPLib :D
http://www.phpbuilder.net/columns/chad19990414.php3
Yo tengo un par de libros de mucha confianza donde viene muy explciado el proceso, ¿quieres que les eche un ojo y te ponga la metodología?
(incluso creo recordar que te puedes descargar los archivos desde la página de la editorial)
[url=https://www.domestika.org/foros/viewtopic.php?t=13691]>> Ver post original
No obstante, si alguien puede aportar más información aún... os lo agradecería miles de veces :)
sermad
Hola, espero no llegar tarde. Supongo que para lo que lo quieres es para controlar que el usuario ha sido logueado y puede acceder a la zona de administración.
Para las sesiones hay que poner siempre la función session_start() al principio de cada página, inclusive la del login. Cuando loguees al usuario correctamente, debes escribir variables de sesión que vas a usar en tu apicación, ya bien sea directamente o cogioendo los datos de una base de datos. Estas se quedan almacenadas en un archivo en el propio servidor. Te pongo un ejemplo:
<code>
$_SESSION['nombre'] = "Usuario 1";
$_SESSION['permisos'] = 1;
$_SESSION['logueado'] = 1;
$_SESSION['idioma'] = "ES";
</code>
La variable $_SESSION['logueado'] es la que usaremos para controlar que el usuario ha sido logueado y tiene permiso para estar en el administrador.
Ahora supongo que redirigirás al usuario al propio panel de control. Lo que suelo hacer aquí y en el resto de páginas del servidor que requieren estar logueado es meter un include en la primera línea del archivo PHP:
<code>
include('./inc/sesion.inc.php');
</code>
Lo que contiene este archivo es lo siguiente:
<code>
session_start();
if($_SESSION['logueado'] != 1)
{
Redireccionar("login.php");
}
if($_SESSION['idioma'] == "ES"){
include('./lang/es.lang.php');
}else{
include('./lang/en.lang.php');
}
</code>
Lo primero que compruebo es si la variable logueado está a 1. Si no, le redirecciono a la página del login. Si está logueado, compruebo la variable de sesión del idioma para poder incluir los archivos necesarios para cada idioma.
Espero que te haya aclarado algo. :-) y si no, avisa.
Saludos
jfm77
Nop, no llegas tarde, me he tomado un descansito, he apartado este tema y he estado programando el blog.
La verdad es que me has has dado un par de ideas que me van a ser útiles. Pretendemos usar el register_globals a Off y mantener las sesiones activas en una BBDD, pero bueno ya me las compondré para montar el sistema, además tengo una tabla con usuarios a la que agregaré un campo con sus roles ("permisos").
Tu idea de crear un fichero sesion.inc.php me ha resultado de mucha ayuda, fíjate que es una tontería, que cuando lo has escrito resulta obvio pero... no se me había ocurrido (vaya paquete que estoy hecho :oops:)
De todos modos según vaya avanzando si descubro algo interesante lo postearé por si en un futuro le sirve a alguien. Muchas gracias sermad :)
Saludos!
jfm77
No se si me he complicado mucho la vida pero al final lo que he codificando en mi session.inc.php es:
<code>/****************************************************
* Post | Sess
* 0 | 0 Acceso no autorizado
* 0 | 1 El usr esta logado (sesion creada)
* 1 | 0 Logar usr (crear sesion)
* 1 | 1 Cambio de usuario
*****************************************************/
// Caso 0, 0 - Acceso no autorizado
if (!isset($_POST['usr']) and !isset($_SESSION['usuario'])) {
$seccion = 'login';
}
// Caso 0, 1 - El usr esta logado (sesion creada)
if (!isset($_POST['usr']) and isset($_SESSION['usuario'])) {
// DoNothing()
}
// Caso 1, 0 - Logar usr (crear sesion)
if (isset($_POST['usr']) and !isset($_SESSION['usuario'])){
inicia_session();
}
// Caso 1, 1 - Cambio de usuario
if (isset($_POST['usr']) and isset($_SESSION['usuario'])) {
session_destroy();
inicia_session();
}
</code>
Luego la funcion inicia_session() es un session_start() y el control de las variables que necesite cada uno:
<code>function inicia_session(){
session_start();
session_register("nombre");
session_register("permisos");
$_SESSION['nombre'] = $usr;
$_SESSION['permisos'] = 1; // o el que tenga el usuario que se loga
}</code>