Continuando con la pequeña serie de posts que intentan mostrar algunas fallas comunes que hacemos los aficionados a PHP, e incluso los que se dedican profesionalmente a desarrollar aplicaciones con este lenguaje, esta vez tocaremos el tema de sesiones.

user.php, necesita de la clase ezSQL, puedes saber mas sobre esta clase en este artículo.

<?php

class User {
	var $id;
	var $name;
	var $email;
	
	function Authenticate($user, $password) {
		global $db, $site_key;

		$user = $db->get_row ( 
			'SELECT id, name, email, password 
				FROM users 
				WHERE username = \'' . $db->escape($user) . '\'');
		
		if ( $user && $user->password == md5( $site_key . $password ) ) {			
			$this->id = $user->id;
			$this->name = $user->name;
			$this->email = $user->email;
			return true;
		}
		return false;
	}
}

?>
 // login.php
<?php

include dirname(__FILE__) . '/db.php'; # genera una instancia de la clase ezSQL
include dirname(__FILE__) . '/user.php';

/*
if ( ! empty( $_SESSION['user'] ) ) {
	header( 'Location: /admin' );
	exit();
}
*/
if ( ! empty( $_POST['user'] ) && ! empty( $_POST['password'] ) ) {	
	$user = new User();
	if ( $user->Authenticate( $_POST['user'], $_POST['password'] ) === true ) {
		$_SESSION['user'] = $user;
		
		header( 'Location: /admin' );
		exit();
	}
}

?>

¿Qué problema existe en el código mostrado? -no es un error de sintáxis :-D

Nota: si eres testigo de otros errores :-) y quieres compartir esa información, no dudes en contactarnos (describe el problema, una posible solucion, si ya lo publicaste en tu blog, envíanos el link para comentar el problema y citar tu post)