Jun
12
2012

Simple Sessions ClassClase para sesiones PHP


Simple Sessions Class

This here class is a very simple one for manipulating sessions in PHP. In fact, it is so simple, that it makes it self explainatory, but nonetheless, I will take the time to document it.

First off, you might notice that the first line is:
[php]

[/php]

I have been using the codeigniter framework for my web projects, and they do not use the traditional sessions within PHP, and while trying to use their sessions library, I have encountered a bit of problems that have not been fixed yet. I then decided to create my own library(class) to implement traditional sessions. In short, the way this class is currently implemented, it can be used in normal PHP projects or add it as a library for codeigniter. If you are going to use this library in normal php, then you can comment out the first line, or even delete it as needed.

Normal PHP: (assuming it is in your same folder)
Require this class at the top of your script
[php]

[/php]

Codeigniter usage:
Copy this class to your ‘applications/libraries’ folder. This can be autoloaded or loaded from the controller:

In the autoload.php file, you can add simple_sessions in libraries index.
[php]
$autoload['libraries'] = array('simple_sessions');
?>
[/php]

In Controller:
[php]
$this->load->library(‘simple_sessions’);
?>
[/php]

Adding Session variables

In order to add new session variables, you will need to use the function add_sess. This function expects an array parameter. This can be done with the following example:

Normal PHP:
[php]
$my_obj = new Simple_sessions();
$data = array(
'username' => $username,
‘userid’ => $userid,
‘fullname’ => $fullname,
‘status’ => $status
);
$my_obj->add_sess($data);
?>
[/php]

Codeigniter:
[php]
$this->load->library(‘simple_sessions’);
$data = array(
‘username’ => $username,
‘userid’ => $userid,
‘fullname’ => $fullname,
‘status’ => $status
);
$this->simple_sessions->add_sess($data);
?>
[/php]

Editing and Deleting a Session variable

If at any moment you need to edit or delete a session variable, then we use following functions respectively edit_sess($name) or del_sess($name). Examples:

Normal PHP:
[php]
// To edit fullname
$my_obj->edit_sess(‘fullname’, ‘My New Name’);
// To delete status
$my_obj->del_sess(‘status’);
?>
[/php]

Codeigniter:
[php]
// To edit fullname
$this->simple_sessions->edit_sess(‘fullname’, ‘My New Name’);
// To delete status
$this->simple_sessions->del_sess(‘status’);
?>
[/php]

Retrieve Session ID

To be able to retrieve the session id, use the function get_sess_id(). Examples:

Normal PHP:
[php]
$session_id = $my_obj->get_sess_id();
?>
[/php]

Codeigniter:
[php]
$session_id = $this->simple_sessions->get_sess_id();
?>
[/php]

Retrieve value of session

To get a value of a session variable, you need to use the get_value($name) function, where name is the name of the variable in the sessions array. Note that if the variable is not existent, then this function will return false.

Normal PHP:
[php]
$fullname = $my_obj->get_value(‘fullname’);
?>
[/php]

Codeigniter:
[php]
$fullname = $this->simple_sessions->get_value(‘fullname’);
?>
[/php]

Check if variable exist

Sometimes all you need is to confirm if the session variable has been declared. To check if the variable is existent, then use the function check_sess($name). Again, $name is the variable name you want to look up. This function will return true or false.

Normal PHP:
[php]
$fullname_exists = $my_obj->check_sess(‘fullname’);
?>
[/php]

Codeigniter:
[php]
$fullname_exists = $this->simple_sessions->check_sess(‘fullname’);
?>
[/php]

Note that if you are going to look for a value of a session variable (get_value()), it is not necessary to use this function, as this same function calls check_sess().

Destroy the session

Lastly, the session variables need to be destroyed after they are not needed anymore. This can be achieved using the following function: destroy_sess(). My suggestion is, if you are going to just delete one session variable, then use del_sess(), otherwise, use destroy_sess() to delete the whole session.

Normal PHP:
[php]
// Destroy the session
$my_obj->destroy_sess();
?>
[/php]

Codeigniter:
[php]
$this->simple_sessions->destroy_sess();
?>
[/php]

That’s basically it for this sessions class. If you are using another PHP framework, and are able to use this class, please let me know how were you able to implement it, that way, I can add those instructions to here, and yes of course, you will get the credit for doing so.

***UPDATE***

Inactivity Timer

Hello all, I have added some functionality to this class. It allows you to verify user inactivity, and log them out if the inactivity time exceeds the max time designated. The “inactivity timer” is enabled when creating a new object of this class. The values should be sent through the constructor. I’ll explain how what each parameter is for:

[php]
/* When creating an instance in Normal PHP */
require_once('Simple_sessions.php');

$sesname = 'myprojectname';
$max = 600;
$login = 'loginpage.php';

$my_obj = new Simple_sessions( $sesname, TRUE, $max, $login );

/* Loading this library in CodeIgniter */
/* Within your controller */

$params = array(
'sess_name' => ‘myprojectname’,
‘_timeout’ => TRUE,
‘max’ => 600,
‘login_page’ => ‘loginpage.php’
);
$this->load->library( ‘Simple_sessions’, $params );
?>
[/php]

Session Name

I recommend to all to have a different session name per project. This is, if there are sessions with the same name from different websites on the same browser, they can be somewhat mixed.

_timeout

This is to enable or disable the inactivity timer. The default value is set to false, to have it disabled. Note how I passed the ‘TRUE’ value.

Max

This number represents the max time you will allow your users to be inactive while in your website. These values are in seconds, so for an inactivity time of 5 minutes, the max would be set to 300(which is the default value).

login_page

This parameter is the page in which you have your login script. The default value is login.php, but this can be changed to your login page, which could be any name you have.

There you have it for now. Please leave feedback if you have used this class, and let me know where it can be improved.

Download link

Simple Sessions ClassClase de sesiones en PHP

Esta clase de aquí es muy sencilla para la manipulación de las sesiones en PHP. En mi opinión, es muy sencillo, y sí explainatory, pero sin embargo, me tomaré el tiempo para documentarlo.

En primer lugar, usted puede notar que la primera línea es:
[php]

[/php]

He estado usando el marco CodeIgniter para mis proyectos web y no utilizan las sesiones tradicionales de PHP, y te imponen a utilizar su biblioteca de sesiones. Me he encontrado con un poco de problema que no han sido arregladas todavía. Fue ahí cuando decidí a crear mi propia biblioteca (clase) para poner en práctica las sesiones tradicionales. En pocas palabras, la manera en que actualmente esta clase está implementada, se puede utilizado en proyectos normales de PHP o añadirlo como una librería para CodeIgniter. Si usted va a utilizar esta biblioteca en php normal, entonces se puede comentar la primera línea, o incluso eliminar, según sea necesario.

Uso en PHP Normal: (suponiendo que está dentro del mismo directorio)
Requieren esta clase en la parte superior de la secuencia de comandos
[php]

[/php]

Uso en Codeigniter:
Copia su clase a la carpeta de “applications/libraries. Esta libreria se puede cargar automáticamente o se carga desde el controlador:

En el archivo: autoload.php, se agrega al arreglo de $autoload['libraries'] el nombre de la libreria.
[php]
$autoload['libraries'] = array('simple_sessions');
?>
[/php]

En el Controller:
[php]
$this->load->library(‘simple_sessions’);
?>
[/php]

Añadiendo las variables de sesión

Con el fin de añadir nuevas variables de sesión, tendrá que utilizar la función add_sess. Esta función recibe un arreglo(array) como parámetro. Esto se puede hacer con el siguiente ejemplo:

Normal PHP:
[php]
$my_obj = new Simple_sessions();
$data = array(
'username' => $username,
‘userid’ => $userid,
‘fullname’ => $fullname,
‘status’ => $status
);
$my_obj->add_sess($data);
?>
[/php]

Codeigniter:
[php]
$this->load->library(‘simple_sessions’);
$data = array(
‘username’ => $username,
‘userid’ => $userid,
‘fullname’ => $fullname,
‘status’ => $status
);
$this->simple_sessions->add_sess($data);
?>
[/php]

Editar y eliminar una variable de sesión

Si en algún momento necesitas editar o eliminar una variable de sesión, entonces usamos las siguientes funciones, respectivamente edit_sess($name) o del_sess($nombre). Ejemplos:

Normal PHP:
[php]
// Editar fullname
$my_obj->edit_sess(‘fullname’, ‘My New Name’);
// Para borrar el status
$my_obj->del_sess(‘status’);
?>
[/php]

Codeigniter:
[php]
// Editar fullname
$this->simple_sessions->edit_sess(‘fullname’, ‘My New Name’);
// Para borrar el status
$this->simple_sessions->del_sess(‘status’);
?>
[/php]

Recuperar ID de sesión

Para ser capaz de recuperar el identificador de sesión, utilice la función get_sess_id(). ejemplos:

Normal PHP:
[php]
$session_id = $my_obj->get_sess_id();
?>
[/php]

Codeigniter:
[php]
$session_id = $this->simple_sessions->get_sess_id();
?>
[/php]

Recuperar el valor de la sesión

Para obtener un valor de una variable de sesión, es necesario utilizar la función get_value($name), donde $name es el nombre de la variable en el arreglo de sesiones. Tenga en cuenta que si la variable no existe, entonces esta función devolverá false(FALSE).

Normal PHP:
[php]
$fullname = $my_obj->get_value(‘fullname’);
?>
[/php]

Codeigniter:
[php]
$fullname = $this->simple_sessions->get_value(‘fullname’);
?>
[/php]

Check if variable exist

A veces lo único que se necesita hacer es confirmar si la variable de sesión ha sido declarada. Para comprobar si la variable es inexistente, a continuación, utilizar la función check_sess ($name). Una vez más, $name es el nombre de variable que desea buscar. Esta función devuelve verdadero o falso.

Normal PHP:
[php]
$fullname_exists = $my_obj->check_sess(‘fullname’);
// Or
if($my_obj->check_sess(‘fullname’){
// Crear lógica…
}
?>
[/php]

Codeigniter:
[php]
$fullname_exists = $this->simple_sessions->check_sess(‘fullname’);
?>
[/php]

Tenga en cuenta que si usted va a buscar un valor de una variable de sesión (get_value()), no es necesario el uso de esta función, ya que esta misma función llama check_sess().

Destruír la sesion

Por último, las variables de sesión deben ser destruidos después de que no sean necesarias. Esto se puede lograr mediante la siguiente función: destroy_sess(). Mi sugerencia es, si se va a eliminar sólo una variable de sesión, debes utilizar la función del_sess(), de lo contrario, el uso destroy_sess() para eliminar toda la sesión.

Normal PHP:
[php]
// Destruye toda la sesión
$my_obj->destroy_sess();
?>
[/php]

Codeigniter:
[php]
$this->simple_sessions->destroy_sess();
?>
[/php]

Eso es básicamente para esta clase de sesiones. Si usted está usando otro framework PHP, y a su vez utilizando esta clase, por favor hágamelo saber cómo fueron capaces de poner en práctica, de esa manera, puede agregar las instrucciones aquí, y sí, por supuesto, usted recibirá el crédito por hacerlo.

Enlace de descarga

Simple Sessions Class

About the Author: Jorge Torres

MS. Computer Science Codeigniter Web Developer

4 Comments+ Add Comment

  • Hola, estaba revisando tu post (muy interesante la verdad) y decidí implementar tu clase como parte de un esquema MVC en PHP. La verdad es que soy nuevo en esto de PHP y me surge la duda de cómo recuperar las variables de sesión en otras clases. Me refiero a que según lo convencional llamas session_start() y ya verificas lo relacionado con $_SESSION['valor'], sin embargo como en el constructor de la clase la asignación esta como “$this->my_sess = $_SESSION;” no se de que forma llamar todo esto en un nuevo archivo php, ya que cuando lo hago obtengo un “Notice: A session had already been started – ignoring session_start() in…”. Saludos y espero me puedas orientar un poco.

    • Saludos Ruben,

      Para obtener los datos de sesión utilizando esta clase, lo unico que necesitas hacer es lo siguiente:

      Vamos a suponer que ya las variables están creadas, y la variable la necesitas en el archivo a.php.

      [php]
      < ?php

      /* Este es el archivo a.php y necesitas la variable 'valor' de la sesión */
      /* Lo primero que debemos hacer es incluir la clase */
      include_once( 'Simple_sessions.php' );

      $mi_sesion = new Simple_sessions();

      $valor = $mi_sesion->get_value( ‘valor’ );

      // Lo despleguamos en el navegador
      echo $valor.’
      ‘;
      ?>
      [/php]

      Espero que esto te ayude.

      • Gracias, voy a probar esto. Jeje te puse este mismo mensaje en inglés (borra el comentario si asi lo deseas). Saludos.

  • So, if you don’t understand me on spanish this is what I want to say:

    Hi, I was watching this post (very interesting in deed) and I decided implement this class such a part of one MVC project on PHP. The ugly truth is that I’m noob in all this of PHP and I have one doubt about how get the session variables in external classes. I mean, in the PHP conventional programming we use session_start() and with this I can verify all related to session variables (like $_SESSION['value']) but in the class constructor we have the assignation “$this->my_sess = $_SESSION;” which I don’t know how to use in external calls on PHP files… when I try to do it I get the message “Notice: A session had already been started – ignoring session_start() in…”. I hope you can help me with this. Thanks.

Leave a comment