Cosas que deberán modificar:
1) La variable SimpleLogin::$auth_salt, en el archivo SimpleSession.php tienen que poner su propio salt, si desean encryptar las claves con crypt(), si quieren utilizar otro metodo sientanse libres de ir al metodo SimpleLogin::login() y cambiar este detalle...
2) En las consultas MySQL, los nombres de las tablas "_sessions" y "_users" se toman desde el arreglo (array) SimpleMySQL::$tables Solo deben armar ese arreglo de la siguiente manera para no tener que modificar todas las consultas... (Al menos para probarlo...)
Código PHP:
Ver original<?php
// Tablas
'users' => '_users',
'sessions' => '_sessions'
);
$MySQL = new SimpleMySQL('mysql_server', 'mysql_user', 'mysql_pass');
$MySQL->select_db('mysql_db_name');
$MySQL->tables = $_TABLES;
?>
3) Modifiquen a su gusto las llaves para utilizar mcrypt, para encryptar los datos de la sesion... En el archivo SimpleSession.php, al principio van a ver la definicion de estas dos constantes:
SESSION_DATA_ENCRYPTION_KEY_1 y
SESSION_DATA_ENCRYPTION_KEY_2
4) Pueden modificar el nombre del COOKIE enviado para las sesiones y la duracion:
SimpleSession::$name // Default: __SESSID
SimpleSession::$lifetime // Default: 1800 (30 minutos)
Una ves creado la base de datos con las tablas, ya podemos probar todo:
test.php
Código PHP:
Ver original<?php
include 'SimpleMySQL.php';
include 'SimpleSession.php';
// Creamos instancia de SimpleMySQL
$SimpleMySQL = new SimpleMySQL('localhost', 'root', 'pass');
$SimpleMySQL->select_db('test');
$SimpleMySQL->tables = array( 'users' => '_users',
'sessions' => '_sessions'
);
// Creamos instancia de SimpleSession, pasando como unico argumento,
// la instancia de SimpleMySQL
$SimpleSession = new SimpleSession($SimpleMySQL);
$SimpleSession->start();
if ((bool)$_POST['login'])
$SimpleSession->login($_POST['username'], $_POST['password']);
if (isset($_GET['logout'])) $SimpleSession->logout();
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 style="color: red;">' .$_SESSION_ERROR[$SimpleSession->status]. '</p>';
}
if ($SimpleSession->logged_in()) {
?>
<h4>Bienvenido, <span style="color: red;"><?php print $SimpleSession->data->account_name ?></span></h4>
<p>ID de sesión: <strong><?php print $SimpleSession->id ?></strong><br />ID de usuario: <strong><?php print $SimpleSession->data->account_id ?></strong><br /><a href="?logout">Cerrar sesión</a></p>
<h4>Datos almacenados en la superglobal $_SESSION</h4>
<pre>
</pre>
<p><strong>Nota</strong>: Se pueden llamar y almacenar dato en $_SESSION a travé del objeto SimpleSessionData de la siguiente manera:</p>
<pre>
$SimpleSession->data->foo = 'bar';
// Lo cual es lo mismo a hacer:
$_SESSION['foo'] = 'bar';
// Por ahi les paresca tonto pero al menos ami
// Siempre me parecio mas facil manejar variables
// en forma de objeto que arreglos...
</pre>
<?php
} else {
?>
<fieldset style="display: inline-block;">
<legend>Prueba de SimpleSession</legend>
<form method="post">
<input type="hidden" name="login" value="1" />
<table>
<tr>
<td><label for="username">Usuario</label></td>
<td><input type="text" id="username" name="username" maxlength="16" /></td>
</tr>
<tr>
<td><label for="password">Contraseña</label></td>
<td><input type="password" id="password" name="password" maxlength="16" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Iniciar sesión" /></td>
</tr>
</table>
</form>
</fieldset>
<?php
}
?>
Como van a ver en el archivo test.php, explico que pueden llamar variables de $_SESSION a traves del objeto SimpleSessionData... Por ahi les parece inutil, pero a mi siempre me parecio mas facil utilizar variables en forma de objeto, en vez de arreglos...
Asi que pueden hacer de las dos maneras:
Código PHP:
Ver original<?php
// Esto:
$SimpleSession->data->foo = 'bar';
print $SimpleSession->data->foo;
// Es igual a esto:
$_SESSION['foo'] = 'bar';
print $_SESSION['foo'] ;
// Otro ejemplo...
if (isset($SimpleSession->data->foo)) { print 'Existe foo';
unset($SimpleSession->data->foo); }
?>
Simplemente acuerdense de usar este metodo despues de $SimpleSession->start();
Bueno... Espero que les sirva y comenten... ¡Si ven que algo anda mal avisen! De seguro yo mismo tambien tratare de mejorarlo...
¡Saludos a todos!