public function generateCaptcha($w = 350, $h = 60)
 {
     unlink(getcwd() . "/public/uploads/captcha.png");
     Session::setValue('captcha', self::texto());
     $captcha = \imagecreatetruecolor($w, $h);
     $colorFondo = \imagecolorallocate($captcha, 0, 0, 255);
     $colorTexto = \imagecolorallocate($captcha, 255, 255, 0);
     $colorLinea = \imagecolorallocate($captcha, 255, 105, 180);
     \imageline($captcha, 120, 39, 250, 39, $colorLinea);
     \imageline($captcha, 120, 45, 250, 45, $colorLinea);
     \imageline($captcha, 120, 50, 250, 50, $colorLinea);
     \imagestring($captcha, 5, 150, 35, Session::getValue('captcha'), $colorTexto);
     imagepng($captcha, getcwd() . "/public/uploads/captcha.png");
     imagedestroy($captcha);
 }
 public static function login($user, $passwd)
 {
     try {
         $con = DBConexion::getInstance();
         $usuario_bd = $con->executeQuery('SELECT * FROM usuario WHERE usuario=?;', array($user));
     } catch (\Exception $e) {
         throw $e;
     }
     if (isset($usuario_bd) && count($usuario_bd) > 0) {
         $usuario_bd = $usuario_bd[0];
         if (password_verify($user . $passwd, $usuario_bd->contrasena)) {
             self::$loggedIn = true;
             self::$arrUsuario['auth_user'] = $user;
             Session::regenerateSessionId();
             $token = sha1($_SERVER['HTTP_USER_AGENT'] . $user . session_id());
             Session::setValue('session_id', session_id());
             Session::setValue('token', $token);
             //Por defecto la cookie se guarda una hora despues de la hora actual
             self::setCookie('session_id', session_id());
             //Por defecto la cookie se guarda una hora despues de la hora actual
             self::setCookie('token', $token);
             //Salvamos los datos de la sesion en bd
             $query = vsprintf("INSERT INTO sesion(session_id, session_data, expire_date) VALUES('%s', '%s', '%s');", array(session_id(), $token, date("Y-m-d H:i:s", self::$expiration)));
             $res = $con->executeUpdate(array($query));
             return true;
         } else {
             Session::setValue('loginErrors', "Usuario o contrase&ntilda;a incorrectos");
             self::$arrUsuario = array();
             self::$loggedIn = false;
             return false;
         }
     }
     return false;
 }