<?php
    include "../conexion/conexion.php";
    session_start();
    date_default_timezone_set("America/Lima");
    $hora = date("H:i");
    $entrada = "00:00";
    $salida = "23:59";
    $correo = "";
    $pass = "";

    $usuariologin = $_POST['txtusuario'];
    $passlogin = $_POST['txtpass'];
    
    
    $miip = $_SERVER['REMOTE_ADDR'];
    $sql = "select count(*) from iptable where ip='$miip'";
    $nips = current($pdo->query($sql)->fetch());
    
    // Establece el número máximo de solicitudes permitidas por IP por minuto
    $maxRequestsPerMinute = 5;
    
    // Obtiene la IP del cliente
    $ip = $_SERVER['REMOTE_ADDR'];
    
    // Crea una variable de sesión para contar las solicitudes por IP
    if (!isset($_SESSION['requests'])) {
        $_SESSION['requests'] = 1;
    } else {
        $_SESSION['requests']++;
    }
    
    // Verifica si se ha superado el límite de solicitudes por minuto
    if ($_SESSION['requests'] > $maxRequestsPerMinute) {
        // Realiza alguna acción, como bloquear la IP, mostrar un mensaje de error, etc.
        // En este ejemplo, simplemente terminamos la ejecución del script
        exit('Demasiadas solicitudes. Inténtalo de nuevo más tarde.');
    }
    
    $nips = 1;
    if($nips > 0){
        try{
            $sql="SELECT * FROM usuario WHERE correo='$usuariologin' or dni='$usuariologin' and pass='$passlogin'";
            $consulta = $pdo->prepare($sql);
            $consulta->execute();
            $accesologin = $consulta->fetchAll(PDO::FETCH_ASSOC);
    
    
            foreach($accesologin as $login){ 
    
                $idusuario = $login["idusuario"];
                $correo = $login["correo"];
                $pass = $login["pass"];
                $nombreusuario = $login["nombreusuario"];
                $dni = $login["dni"];
                $estado = $login["estado"];
                $idrol = $login["idrol"];
            }
    
    
            if(($correo == $usuariologin || $dni == $usuariologin) && $passlogin == $pass){
                if($idrol == 1 || $hora >= $entrada && $hora<=$salida){
                    if($estado == 2){
                        $_SESSION['start'] = $idusuario;
                        header("Location:inicio.php");
                    }
                    else if($estado == 1){
                        echo'<script type="text/javascript">alert("Su registro aún no ha sido aprobado, comuníquese con el Administrador");window.location.href="login.php";</script>';
                    }
                    else{
                        echo'<script type="text/javascript">alert("Usuario Desactivado, comuníquese con el administrador!");window.location.href="login.php";</script>';
                    }
                }
                else{
                    echo '<script type="text/javascript">alert("Se encuentra fuera del horario de trabajo!");window.location.href="login.php";</script>';
                }
            }  
            else{
                echo'<script type="text/javascript">alert("Usuario o Contraseña incorrectos!");window.location.href="login.php";</script>';            
            }
        }
    
        catch(PDOException $e){
            echo $e->getMessage();
        }
    }else{
        echo'<script type="text/javascript">alert("Ubicación de Inicio de Sesión Inválida!");window.location.href="../../login/login.php";</script>';
    }
    
    // Al finalizar el script, restablece el contador de solicitudes por IP
    if ($_SESSION['requests'] > $maxRequestsPerMinute || time() - $_SESSION['last_request_time'] > 60) {
        $_SESSION['requests'] = 1;
        $_SESSION['last_request_time'] = time();
    }
?>