Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //Evitamos que nos salgan los NOTICES de PHP
- error_reporting(E_ALL ^ E_NOTICE);
- //Obtenemos el timestamp del servidor de cuanto se hizo la petición
- $hora = $_SERVER["REQUEST_TIME"];
- require('conexion.php');
- //Duración de la sesión en segundos
- $duracion = 9000;
- //Si el tiempo de la petición* es mayor al tiempo permitido de la duración,
- //destruye la sesión y crea una nueva
- if (isset($_SESSION['ultima_actividad']) && ($hora - $_SESSION['ultima_actividad']) > $duracion) {
- session_unset();
- session_destroy();
- // session_start();
- };
- // * Por esto este archivo debe ser incluido en cada página que necesite comprobar las sesiones
- //Definimos el valor de la sesión "ultima_actividad" como el timestamp del servidor
- $_SESSION['ultima_actividad'] = $hora;
- ?>
- //Conectamos a la base de datos
- require('../../config/conexion.php');
- //Obtenemos los datos del formulario de acceso
- $userPOST = $_POST["idUsuario"];
- $passPOST = $_POST["idPass"];
- //Filtro anti-XSS Seguridad
- $userPOST = htmlspecialchars(mysqli_real_escape_string($conexion, $userPOST));
- $passPOST = htmlspecialchars(mysqli_real_escape_string($conexion, $passPOST));
- //Definimos la cantidad máxima de caracteres
- //Esta comprobación se tiene en cuenta por si se llegase a modificar el "maxlength" del formulario
- //Los valores deben coincidir con el tamaño máximo de la fila de la base de datos
- $maxCaracteresUsername = "20";
- $maxCaracteresPassword = "60";
- //Si los input son de mayor tamaño, se "muere" el resto del código y muestra la respuesta correspondiente
- if(strlen($userPOST) > $maxCaracteresUsername) {
- die('El nombre de usuario no puede superar los '.$maxCaracteresUsername.' caracteres');
- };
- if(strlen($passPOST) > $maxCaracteresPassword) {
- die('La contraseña no puede superar los '.$maxCaracteresPassword.' caracteres');
- };
- //Pasamos el input del usuario a minúsculas para compararlo después con
- //el campo "usernamelowercase" de la base de datos
- // $userPOSTMinusculas = strtolower($userPOST);
- //Escribimos la consulta necesaria
- // $consulta = "SELECT * FROM `users` WHERE usernamelowercase='".$userPOSTMinusculas."'";
- //Consulta normal sin pedir comprobaciones de minusculas o mayusculas.
- $consulta = "SELECT * FROM `users` WHERE username='".$userPOST."'";
- //Obtenemos los resultados
- $resultado = mysqli_query($conexion, $consulta) or die ("Query problem");
- $datos = mysqli_fetch_array($resultado);
- //Guardamos los resultados del nombre de usuario normal, no en minúsculas
- //y de la contraseña de la base de datos
- $userBD = $datos['username'];
- $passwordBD = $datos['password'];
- //Comprobamos si los datos son correctos
- // if($userBD == $userPOSTMinusculas and password_verify($passPOST, $passwordBD)){
- if($userBD == $userPOST and $passPOST == $passwordBD){
- date_default_timezone_set('America/Chihuahua');
- // die($parsedDate); //2016-08-18 22:54:33
- //CrearFuncion para la diferencia en las fechas y el accesso en si para no repetir procedimientos...
- //Funciones o declaraciones repetidas deberan ser incluidas en esta clase*****************************************
- $time = date('Y-m-d H:i:s');
- $time_dt = new DateTime($time);
- $databasetime_dt = new DateTime($datos['lastActivity']);
- //*******************************OBTENER DIFERENCIAS EN LAS FECHAS. ENTRE EL TIEMPO ACTUAL Y LA HORA QUE SE REGISTRA EN LA BASE DE DATOS.
- $interval = $databasetime_dt->diff($time_dt);
- // die($interval->format('%Y'));
- if($datos['logged'] == 0){
- session_id($datos['id']);
- session_start();
- $_SESSION['id'] = $datos['id'];
- $_SESSION['usuario'] = $datos['username'];
- $_SESSION['estado'] = 'Autenticado';
- // ***********************************************************************************//
- //SE GENERA UN UPDATE PARA CONFIRMAR QUE EL USUARIO ESTE LOGUEADO, SI LO ESTA, NO PODRA TENER MAS DE UNA SESION ACTIVA CON UN UPDATE EN LA HORA DE ACCESO//
- $consultaActivo = "UPDATE users SET logged = 1, lastActivity ='".$time."' WHERE id=".$datos['id'];
- $resultadoActivo = mysqli_query($conexion, $consultaActivo);
- echo 'Hecho';
- }else{
- if($interval->format('%Y') >= 1){
- session_id($datos['id']);
- session_start();
- $_SESSION['id'] = $datos['id'];
- $_SESSION['usuario'] = $datos['username'];
- $_SESSION['estado'] = 'Autenticado';
- echo 'Hecho';
- // die("Uno o mas años de diferencia");
- }else{
- if($interval->format('%m') >= 1){
- session_id($datos['id']);
- session_start();
- $_SESSION['id'] = $datos['id'];
- $_SESSION['usuario'] = $datos['username'];
- $_SESSION['estado'] = 'Autenticado';
- echo 'Hecho';
- // die("Uno o mas meses de diferencia");
- }else{
- if($interval->format('%d') >= 1){
- session_id($datos['id']);
- session_start();
- $_SESSION['id'] = $datos['id'];
- $_SESSION['usuario'] = $datos['username'];
- $_SESSION['estado'] = 'Autenticado';
- echo 'Hecho';
- // die("Uno o mas dias de diferencia");
- }else{
- if($interval->format('%H') >=1){
- session_id($datos['id']);
- session_start();
- $_SESSION['id'] = $datos['id'];
- $_SESSION['usuario'] = $datos['username'];
- $_SESSION['estado'] = 'Autenticado';
- echo 'Hecho';
- // die("Una o mas hora de diferencia");
- }else{
- if($interval->format('%i') > 10){
- session_id($datos['id']);
- session_start();
- $_SESSION['id'] = $datos['id'];
- $_SESSION['usuario'] = $datos['username'];
- $_SESSION['estado'] = 'Autenticado';
- echo 'Hecho';
- }
- else{
- echo 'SesionActiva';
- }
- }
- }
- }
- }
- }
- /* Sesión iniciada, si se desea, se puede redireccionar desde el servidor */
- //Si los datos no son correctos, o están vacíos, muestra un error
- //Además, hay un script que vacía los campos con la clase "acceso" (formulario)
- // } else if ( $userBD != $userPOSTMinusculas || $userPOST == "" || $passPOST == "" || !password_verify($passPOST, $passwordBD) ) {
- } else if ( $userBD != $userPOST || $userPOST == "" || $passPOST == "" || !password_verify($passPOST, $passwordBD) ) {
- // die ('<script>$(".input-group-addon").val("");</script>');
- echo "Datos erroneos";
- } else {
- die('Error');
- };
- ?>
- <?php
- //Reanudamos la sesión
- session_start();
- //Requerimos los datos de la conexión a la BBDD
- require('../../config/conexion.php');
- $consultaActivo = "UPDATE `users` SET logged=0 WHERE id=".$_SESSION['id'];
- $resultadoActivo = mysqli_query($conexion, $consultaActivo);
- //Des-establecemos todas las sesiones
- unset($_SESSION);
- //Destruimos las sesiones
- session_destroy();
- //Cerramos la conexión con la base de datos
- mysqli_close($conexion);
- //Redireccionamos a el index
- header("Location: ../../");
- return true;
- die();
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement