Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/02/2010, 06:45
Nisrokh
 
Fecha de Ingreso: septiembre-2009
Ubicación: Neuquén
Mensajes: 142
Antigüedad: 15 años, 1 mes
Puntos: 12
[APORTE] Sistema de Sesiones y Autentificación de usuario con MySQL

Hola gente, como le va... Hace rato que no entraba a Foros del Web, y decidi hacer un posteo con un aporte por primera vez, además me gustaría que me ayuden a mejorar y ver si lo que hice es seguro o no, etc... He hecho un sistema de sesiones y autentificacion de usuario para un portal en el que estoy trabajando, y me gustaría que dejen su comentario para ver si lo que hice realmente sirve y como dije, si es seguro... ¡Espero que les sirva!

Nota: Está documentado en Inglés ya que más que nada lo hice para guiarme yo mismo, el inglés siempre me pareció más simple y corto de escribir comparado al español :p

Antes de empezar, les pido que lean todo el posteo antes de probala en su servidor XAMPP, o el que tengan...

Tablas MySQL:
Código MySQL:
Ver original
  1. -- Tabla para las sesiones
  2. CREATE TABLE IF NOT EXISTS `_sessions` (
  3.   `session_id` varchar(64) NOT NULL DEFAULT '',
  4.   `session_data` longtext NOT NULL,
  5.   `session_touched` bigint(20) unsigned NOT NULL,
  6.   UNIQUE KEY `session_id` (`session_id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  8.  
  9. -- Tabla para usuarios
  10. CREATE TABLE IF NOT EXISTS `_users` (
  11.   `account_name` varchar(16) NOT NULL DEFAULT '',
  12.   `account_pass` varchar(32) NOT NULL DEFAULT '',
  13.   `account_email` varchar(96) NOT NULL DEFAULT '',
  14.   `account_type` tinyint(1) unsigned NOT NULL DEFAULT '1',
  15.   `account_status` tinyint(1) NOT NULL DEFAULT '0',
  16.   `account_validation_key` varchar(32) NOT NULL DEFAULT '',
  17.   `account_registered_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  18.   PRIMARY KEY (`id`),
  19.   UNIQUE KEY `account_name` (`account_name`),
  20.   KEY `account_email` (`account_email`)
  21. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
  22.  
  23. -- Insertamos un usuario de prueba...
  24. -- Usuario: demo
  25. -- Clave: demo
  26. INSERT INTO `_users` (`id`, `account_name`, `account_pass`, `account_email`, `account_type`, `account_status`, `account_validation_key`, `account_registered_date`) VALUES
  27. (1, 'demo', '$1$CZ..jd4.$/zsff1Id4S9h3gylYr/6R/', '[email protected]', 0, 1, '', '2010-01-01 16:00:00');

Nora: la clave fue encryptada con crypt() utilizando como salt: $1$CZ..jd4.$XUyjB06VQ7K.E3yKw7hXh/ En una de las clases que verán a continuación, van a notar que ya les puse el salt en una variable...

Bueno, a continuacion la clase de Sessiones y Autentificación:

Última edición por Nisrokh; 16/02/2010 a las 17:27