function __construct() { if (isset($_POST['recordUser'])) { $this->login = $_POST['login']; $this->name = $_POST['nombre']; $this->email = $_POST['email']; $this->firma = $_POST['firma']; $date = new DateTime(); $day = $date->format("Y-m-d"); $time = $date->format("h:i:s"); $this->dateTime = $day . " " . $time; if ($this->checkInputs()) { parent::connect(); if ($this->noIssetNickName()) { if ($this->regUser()) { $this->textConfirm = "¡El usuario se ha creado con éxito!"; } else { $this->showMessage("No se ha podido registrar el usuario, vuelva a intentarlo más tarde."); } } else { $this->failLogin = "******"; } } } }
/** * Login constructor. */ function __construct() { if (isset($_POST['logUser'])) { $this->login = $_POST['login']; $this->pass = $_POST['pass']; self::$access_error = $_POST['access_error']; if (isset($_POST['openSession']) && !empty($_POST['openSession'])) { setcookie('PHPSESSID', $_COOKIE['PHPSESSID'], time() + 86400); } parent::connect(); if ($this->checkInputsEmpty()) { if ($this->check()) { $_SESSION['usuario_logueado'] = true; } } } }
/** * @return bool * * Actualiza los campos tan solo relacionados con la contraseña y realiza sus respectivas comprobaciones. * 1.- Comprueba que los campos del formulario relacionados con la contraseña no esten vacios. * 2.- Comprueba que la nueva contraseña cumpla los requisitos que debe tener la contraseña (min 8 car, 1 mayu, 1 min y 1 num). * 3.- Comprueba que la contraseña antigua sea igual que la que el usuario ha introducido en el campo de 'Contraseña antigua'. * 4.- Comprueba que la nueva contraseña y su repetición sean iguales. * */ private function passUpdate() { if (empty($this->old) && empty($this->new) && empty($this->renew)) { return false; } else { if (preg_match("/(?=^.{8,}\$)((?=.*\\d)|(?=.*\\W+))(?=.*[A-Z])(?=.*[a-z]).*\$/", $this->new)) { if (password_verify($this->old, $_SESSION['user']['pass'])) { if ($this->new == $this->renew) { /** * Este código evaluará el servidor para determinar el coste permitido. * Se establecerá el mayor coste posible sin disminuir demasiando la velocidad * del servidor. 8-10 es una buena referencia, y más es bueno si los servidores * son suficientemente rápidos. El código que sigue tiene como objetivo un tramo de * ≤ 50 milisegundos, que es una buena referencia para sistemas con registros interactivos. */ $timeTarget = 0.05; // 50 milisegundos $coste = 8; do { $coste++; $inicio = microtime(true); $this->new = password_hash($this->new, PASSWORD_BCRYPT, ["cost" => $coste]); $fin = microtime(true); } while ($fin - $inicio < $timeTarget); } else { $this->newFail = "Las nuevas contraseñas no coinciden"; return false; } } else { $this->oldFail = "La contraseña introducida no coincide con la anterior"; return false; } } else { $this->newFail = "La nueva contraseña no cumple los requisitos"; return false; } // Establece la conexión a la BD. parent::connect(); $this->_sql = "UPDATE users SET pass = '******' WHERE login = '******'user']['login'] . "';"; $query = parent::$_db_connect->query($this->_sql); if ($query === false) { parent::errorResult("¡No se a podido actualizar la contraseña!", true); return false; } return true; } }