Otras cosas que deben saber es que al autentificar un usuario, se guardan los siguientes datos en la sesion:
Código PHP:
Ver original<?php
// ID del la cuenta
$_SESSION['account_id'];
// Nombre de la cuenta
$_SESSION['account_name'];
// Tipo de la cuenta
// En mi caso lo utilize asi:
// 0 => Administrador, 1 => Moderador, 2 o mas => Usuario normal
// Pueden cambiar o sacar esto cambiando la tabla _users y modificando
// el metodo SimpleSession::login() y eliminando/cambiando la constante:
// LOGIN_ACCESS_ERROR_UNAUTHORIZED_ACCOUNT
$_SESSION['account_type'];
// Al estar logueado esto queda como true, pero ojo...
// Al checkear si alguien esta logueado con SimpleSession::logged_in()
// Se fija si existe el nombre usuario ($_SESSION['account_name'])
// Sino existe o esta vacio, se cierra la session del usuario
// eliminando todas las variables mencionadas aqui, incluso esta misma
$_SESSION['access'];
?>
Nota: Para determinar si el usuario esta logueado, se comprueba que:
* $_SESSION['account_name'] exista y no este vacia
* $_SESSION['access'] que como booleano siempre de true
¡Si les parece inseguro sugieran otro metodo para mejorarlo!
Al intentar un usuario loguearse, login se encarga de setear los errores utilizando las constantes definidas en SimpleSession.php
Código PHP:
Ver original<?php
define('LOGIN_ACCESS_NO_ATTEMPT', -1); // Solo para una referencia de que no se intento loguear... define('LOGIN_ACCESS_GRANTED', 0); // Usuario se logue correctamente (no hay error)
// Error de login: contraseña incorrecta
define('LOGIN_ACCESS_ERROR_ATTEMPT_FAILED', 1);
// Error de login: cuenta inexistente
define('LOGIN_ACCESS_ERROR_NONEXISTENT_ACCOUNT', 2);
// Error de login: cuenta no autorizada
// Deben modificar el metodo SimpleLogin::login() y cambiar la parte en q solo deja entrar
// a usuarios con account_type = 0 || 1
// Ya que en mi caso solo keria dejar entrar admins y mods
// Si tienen dudas pregunten
define('LOGIN_ACCESS_ERROR_UNAUTHORIZED_ACCOUNT', 3);
// Error de login: cuenta sin validar
// De nuevo: modifiquen si kieren, el metodo SimpleLogin::login()
// Ya que solo deja entrar a usuarios validados
// con account_status = 1 (validado) || 0 (sin validar)
define('LOGIN_ACCESS_ERROR_UNVALIDATED_ACCOUNT', 4);
// Error de login: cuenta bloqueada
// cuando account_status < 0
define('LOGIN_ACCESS_ERROR_BLOCKED_ACCOUNT', 5);
// Error de login: no se ingreso usuario en el form
define('LOGIN_ACCESS_ERROR_MISSING_USERNAME', 6);
// Error de login: no se ingreso clave en el form
define('LOGIN_ACCESS_ERROR_MISSING_PASSWORD', 7);
?>
Si el logueo falla, podemos imprimir los errores de una menera muy simple, de acorde a los errores dados en las constantes:
Código PHP:
Ver original<?php
$SimpleSession = new SimpleSession($MySQL);
$SimpleSession ->start();
$SimpleSession->login('test', 'test');
1 => 'La contraseña no coincide con el nombre de usuario ingresado.',
2 => 'El nombre de usuario ingresado es inexistente.',
3 => 'La cuenta con la que usted está tratando de ingresar, no está autorizada para acceder al área de administración.',
4 => 'La cuenta con la que usted está tratando de ingresar, aún no ha sido validada. <br />Si usted es el dueño de esta cuenta, puede validarla haciendo clic <a href="#" class="blue">aquí</a>.',
5 => 'La cuenta con la que usted está tratando de ingresar ha sido bloqueada por un administrador.',
6 => 'No ha ingresado su nombre de usuario.',
7 => 'No ha ingresado su contraseña.',
8 => 'Se ha producido un error interno desconocido. Por favor, intente más tarde.'
);
// Si hay un error lo imprimimos
if ($SimpleSession->status > 0) {
print '<p>' .$_SESSION_ERROR[$SimpleSession->status]. '</p>';
}
?>
Y por último... Al utilizar el metodo
SimpleLogin::logout() se destruyen TODAS las variables de la sesion... Si desean mantener datos aun despues de que un usuario cierre sesion, cambian el metodo
SimpleLogin::logout() para que solo destruya las variables de las que hablamos anteriormente:
Código PHP:
Ver original$_SESSION['account_id'];
$_SESSION['account_name'];
$_SESSION['account_type'];
$_SESSION['access'];
Si tienen dudas, ya saben... ¡Pregunten!