Location: PHPKode > projects > Agenda Pro > agenda-pro/login.php
<?php
/*
    Agenda Pro - Gestor de contactos web y multiusuario
    Copyright (C) 2009 Pedro J. Estébanez y Unai Gómez Velasco

    Este programa es software libre: usted puede redistribuirlo y/o modificarlo 
    bajo los términos de la Licencia Pública General GNU publicada 
    por la Fundación para el Software Libre, ya sea la versión 3 
    de la Licencia, o (a su elección) cualquier versión posterior.

    Este programa se distribuye con la esperanza de que sea útil, pero 
    SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 
    MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 
    Consulte los detalles de la Licencia Pública General GNU para obtener 
    una información más detallada. 

    Debería haber recibido una copia de la Licencia Pública General GNU 
    junto a este programa. 
    En caso contrario, consulte <http://www.gnu.org/licenses/>.
*/

//Require aborta la ejecución si no está el fichero
require_once 'inc/init.php';

$pAccion = POST('accion');

if ($pAccion == 'login')
{
	// Comprobar las credenciales

	$pUsuario	= POST('usuario', TRUE);
	$pPassword	= POST('password', TRUE);

	$sql = "SELECT * FROM usuarios WHERE Nombre = '"._BD($pUsuario)."'";
	$res = query($sql);
	$usuario = mysqli_fetch_assoc($res);

	$mensajeErrorUsuario = 'El nombre de usuario o la contraseña son incorrectos.';
	$mensajeErrorBloqueo = "La cuenta de usuario especificada está bloqueada.\nContacte con el administrador.";

	if ($usuario)
	{
		if (sha1($pPassword.$usuario['GranoSalPassword'].$bdSecreto) == $usuario['HashPassword'])
		{
			if (!$usuario['Administrador'])
			{
				// Comprobar si se bloquea por no haberse identificado en N días (salvo que sea administrador)
				if (time() - fechaHoraATimestamp($usuario['FechaParaBloqueo']) > $sesionDiasSinLoginBloqueo * 24 * 60 * 60)
				{
					_LOG('Bloqueado por límite de tiempo sin identificarse.');

					$usuario['Bloqueado'] = 1;
					$sql = 'UPDATE usuarios SET Bloqueado = 1 WHERE ID = '.intval($usuario['ID']);
					query($sql);
					$mensaje = $mensajeErrorBloqueo;
				}
			}
			// Comprobar si está bloqueado
			if ($usuario['Bloqueado'])
			{
				$mensaje = $mensajeErrorBloqueo;
			}
		}
		else
		{
			$mensaje = $mensajeErrorUsuario;
		}
	}
	else
	{
		$mensaje = $mensajeErrorUsuario;
	}

	if (!isset($mensaje))
	{
		// Login correcto

		$_SESSION = array();
		$_SESSION['idUsuario'] = $usuario['ID'];

		$sql = "UPDATE usuarios SET IP = '"._BD(ipCliente())."', FechaParaBloqueo = '".date('YmdHis')."' WHERE ID = ".intval($usuario['ID']);
		query($sql);

		_LOG('Identificado.');

		header('Location: index.php');
	}
	else
	{
		_LOG('Identificación fallida.');
	}
}

$tituloPagina = 'Identificación';
require_once 'inc/head.php';
?>
<body onload="elById('logUsuario').focus();">

<form id="frmLogin" method="post" action="login.php">
	<img src="img/logo.png" width="227" height="80" alt="Agenda Pro" />

	<input type="hidden" name="accion" value="login" />

	<label for="logUsuario">Usuario</label>
	<input type="text" name="usuario" id="logUsuario" />

	<label for="logPassword">Contraseña</label>
	<input type="password" name="password" id="logPassword" />

	<a href="nueva-password.php">Olvidé mi contraseña.</a>

	<input type="submit" value="Acceder" />
<?php
if (isset($mensaje))
{
?>
	<p id="mensaje"><?php echo _HTML($mensaje); ?></p>
<?php
}
?>
</form>

<?php
require_once 'inc/footer.php';
?>
Return current item: Agenda Pro