Пример #1
0
 public static function validarLogin()
 {
     $errores = [];
     if (($err = self::validarEntradaLogin()) !== true) {
         $errores = $err;
     }
     if (!$errores) {
         $conn = Database::getInstance()->getDatabase();
         $ssql = "SELECT * \n\t\t\tfrom usuario inner join persona on (usuario.id = persona.id)\n\t\t\twhere (nick = :nick OR email = :nick) AND habilitado = 1";
         $nick = $_POST['nick'];
         $query = $conn->prepare($ssql);
         $query->bindParam(':nick', $nick);
         $query->execute();
         if ($query->rowCount() == 0) {
             $errores['nick'][] = "Usuario o contraseña incorrectos";
         } else {
             $ssql2 = "SELECT * \n\t\t\t\tFROM usuario inner join persona on (usuario.id = persona.id)\n\t\t\t\tWHERE (nick = :nick OR email = :nick) AND habilitado = 1 AND pass = :passwd";
             $passwd = HelperFunctions::encriptarPasswd($_POST['passwd']);
             $query = $conn->prepare($ssql2);
             $query->bindParam(':nick', $nick);
             $query->bindParam(':passwd', $passwd);
             $query->execute();
             if ($query->rowCount() == 0) {
                 $errores['passwd'][] = "La contraseña introducida es incorrecta";
             }
         }
     }
     return Validaciones::resultado($errores);
 }
Пример #2
0
 /**
  * Método estatico de inserción de registros en persona
  * + FECHA DE ALTA
  * @return [type]              [description]
  */
 public static function insert($actualiza = false)
 {
     // Comprobamos que los campos requeridos están sino error
     if (isset($_POST["nombre"]) && isset($_POST["apellidos"]) && isset($_POST["email"])) {
         // variable del método para poder hacer un rapido bindeo de parametros y errores
         $errores = [];
         $campos = [];
         //  validamos el nombre
         if (isset($_POST["nombre"])) {
             if (($err = Validaciones::validarNombre($_POST["nombre"])) !== true) {
                 $errores["nombre"] = $err;
             } else {
                 // si hay nombre lo ponemos en un array
                 $campos[":nombre"] = $_POST["nombre"];
             }
         }
         if (isset($_POST["apellidos"])) {
             // Validamos los apellidos
             if (($err = Validaciones::validarApellidos($_POST["apellidos"])) !== true) {
                 $errores["apellidos"] = $err;
             } else {
                 // si son validos los apellidos lo preparamos para el bindeo
                 $campos[":apellidos"] = $_POST["apellidos"];
             }
         }
         if (isset($_POST["email"])) {
             // validamos el email
             if (($err = Validaciones::validarEmail($_POST["email"])) !== true) {
                 $errores["email"] = $err;
             } else {
                 if (self::comprobarUnique("email", $_POST["email"]) === true) {
                     $errores["email"][] = "El email insertado ya está registrado.";
                 } else {
                     $campos[":email"] = $_POST["email"];
                 }
             }
         }
         if (isset($_POST["direccion"])) {
             // Si existe la dirección se valida
             if (($err = Validaciones::validarDireccion($_POST["direccion"])) !== true) {
                 $errores["direccion"] = $err;
             } else {
                 // si existe, preparamos el bindeo
                 $campos[":direccion"] = $_POST["direccion"];
             }
         }
         // si existe la provincia
         if (isset($_POST["provincia"])) {
             // se valida la provincia
             if (($err = provinciaModel::getProvinciaByNombre($_POST["provincia"])) !== true) {
                 $errores["provincia"][] = "La provincia no existe";
             } else {
                 $prov = ProvinciaModel::getProvinciaId($_POST["provincia"]);
                 $campos[":provincia"] = $prov[0]['id'];
             }
         }
         // si existe provincia
         // si exite el nif
         if (isset($_POST["nif"])) {
             // se valida
             if (($err = Validaciones::validarNif($_POST["nif"])) !== true) {
                 $errores["nif"][] = "El DNI o NIF no cumple el formato.";
             } else {
                 if (self::comprobarUnique("nif", $_POST["nif"]) === true) {
                     $errores["nif"][] = "El DNI o NIF insertado ya está registrado.";
                 } else {
                     $campos[":nif"] = $_POST["nif"];
                 }
             }
         }
         // si existe telefono
         if (isset($_POST["telefono"])) {
             // se valida
             if (($err = Validaciones::validarTelefono($_POST["telefono"])) !== true) {
                 $errores["telefono"] = $err;
             } else {
                 // si existe la preparo
                 $campos[":telefono"] = $_POST["telefono"];
             }
         }
         // si exite newsletter
         if (isset($_POST["newsletter"])) {
             // se valida
             if (($err = Validaciones::validarTelefono($_POST["newsletter"])) !== true) {
                 $errores["newsletter"] = $err;
             } else {
                 // si existe la preparo
                 $campos[":newsletter"] = $_POST["newsletter"];
             }
         }
         // si no hay errores
         if (!$errores) {
             // Si ha pasado las validaciones y estoy actualizando paro aquí y devuelvo true.
             if ($actualiza === true) {
                 return true;
             }
             try {
                 // Montamos las consultas
                 $fields = "";
                 $values = "";
                 // $values = " :campo1 :campo2 ..."
                 // $fields = "campo1, campo2,"
                 foreach ($campos as $indice => $valor) {
                     $values .= " " . $indice . ",";
                     $aux = mb_substr($indice, 1);
                     $fields .= $aux . ",";
                 }
                 // le quito la última coma de más
                 $fields = trim($fields, ",");
                 $values = trim($values, ",");
                 // conexión a la base de datos
                 $conn = Database::getInstance()->getDatabase();
                 // consulta de la base de datos
                 // Añadimos a la consulta la fecha de alta formateada
                 $fecha = "'" . date("Y-m-d") . "'";
                 $ssql = "INSERT INTO persona({$fields}, fecha_alta) VALUES ({$values}, {$fecha})";
                 // preparamos la consulta
                 $query = $conn->prepare($ssql);
                 $query->execute($campos);
                 if ($query->rowCount() === 1) {
                     return $conn->lastInsertId();
                 }
                 return false;
             } catch (PDOException $e) {
                 // Lanzamos una excepción a tratar en el controlador
                 throw new Exception('Error con la base de datos');
             }
         } else {
             // devolvemos los errores
             return Validaciones::resultado($errores);
         }
     } else {
         // si los campos requeridos no existen
         $errores['generic'][] = "Los campos requeridos no han sido introducidos";
         return Validaciones::resultado($errores);
     }
 }
Пример #3
0
 /**
  * Método de inserción que recoge las variables de $_POST
  * @return [type] [description]
  */
 public static function insert()
 {
     // Primero tenemos que preparar un bloque try catch
     $errores = [];
     if ($_POST) {
         // Validamos todas las variables de $_POST
         $_POST = Validaciones::sanearEntrada($_POST);
         // empezamos la transacción
         $conn = Database::getInstance()->getDatabase();
         $conn->beginTransaction();
         if (($error = PersonaModel::insert()) && !is_array($error)) {
             // Comprobaos los campos requeridos en la tabla
             if (isset($_POST["nick"]) && isset($_POST["pass1"]) && isset($_POST["pass2"]) && isset($_POST["categoria"])) {
                 // Si cualquiera de los campos requeridos
                 // Diese un error deberemos lanzar un rollback
                 // validar Nick
                 if (isset($_POST["nick"])) {
                     if (($err = Validaciones::validarNick($_POST["nick"])) === true) {
                         // comprobamos que dicho nick exista en la base de datos
                         // Sino lanzamos un error
                         try {
                             $conn = Database::getInstance()->getDatabase();
                             $ssql = "SELECT * FROM usuario WHERE nick = :nick";
                             $prepare = $conn->prepare($ssql);
                             $prepare->bindParam(":nick", $_POST["nick"], PDO::PARAM_STR);
                             $prepare->execute();
                             if ($prepare->rowCount() === 1) {
                                 // si existe la preparo
                                 $errores["nick"][] = "El nick ya existe";
                             } else {
                                 $campos[":nick"] = $_POST["nick"];
                                 // creamos la carpeta personal del usuario
                                 $ruta = shell_exec('pwd');
                                 $ruta = trim($ruta);
                                 $ruta .= "/" . $_POST['nick'];
                                 if (Validaciones::crearDir($carpeta = $ruta)) {
                                     $campos[":carpeta"] = $carpeta;
                                 }
                             }
                         } catch (PDOException $e) {
                             return $errores['generic'][] = "Error en la base de datos";
                         }
                     } else {
                         $errores["nick"][] = $err;
                     }
                 }
                 // Validar contraseña
                 if (isset($_POST["pass1"]) && isset($_POST["pass1"])) {
                     if (($err = Validaciones::validarPassAlta($_POST["pass1"], $_POST["pass2"])) !== true) {
                         $errores["pass"] = $err;
                     } else {
                         $campos[":pass"] = HelperFunctions::encriptarPasswd($_POST["pass1"]);
                     }
                 } else {
                     $errores["pass"][] = "Una de las contraseñas o ambas no han sido introducidas";
                 }
                 if (isset($_POST["categoria"])) {
                     // Validar la categoría
                     // En el formulario es un campo select
                     // el cual tiene como value el valor de la BD
                     // de forma que aqui solo hay que validar el id de la categria
                     if (($err = CategoriaModel::getCategoriaByNombre($_POST["categoria"])) !== true) {
                         $errores["categoria"][] = "La categoría no existe";
                     } else {
                         $aux = CategoriaModel::getCategoriaId($_POST["categoria"]);
                         $campos[":categoria"] = $aux[0]['id'];
                     }
                     // fin de las comprobaciones de categoria
                 } else {
                     $errores["categoria"][] = "La categoría no existe";
                 }
                 // Si hay errores los retornamos
                 if ($errores) {
                     $conn->rollback();
                     return Validaciones::resultado($errores);
                 } else {
                     // Insertamos todos los valores
                     // Montamos las consultas
                     $fields = "";
                     $values = "";
                     // $values = " :campo1 :campo2 ..."
                     // $fields = "campo1, campo2,"
                     foreach ($campos as $indice => $valor) {
                         $values .= " " . $indice . ",";
                         $aux = mb_substr($indice, 1);
                         $fields .= $aux . ",";
                     }
                     // le añado el id
                     $fields .= " id";
                     $values .= " :id";
                     $campos[":id"] = $error;
                     // Si ha entrado aqui, $error es el id.
                     $ssql = "INSERT INTO usuario({$fields}) VALUES ({$values})";
                     $query = $conn->prepare($ssql);
                     /*foreach ($campos as $indice => $valor) {
                     			if ($indice == ":categoria") {
                     				$query->bindParam($indice, $valor,PDO::PARAM_INT);
                     			} else {
                     				$query->bindParam($indice, $valor,PDO::PARAM_STR);
                     			}
                     		}*/
                     $query->execute($campos);
                     $conn->commit();
                     return true;
                 }
             } else {
                 // puesto que no tratamos de insertar
                 // solamente personas sino que tenemos que insertar usuarios
                 // que puedan logearse, si los campos del usuario no existen
                 // directamente se hace un rollback
                 $conn->rollback();
                 $errores['generic'][] = "No se han recivido los datos minimos requeridos";
             }
         } elseif ($error === false) {
             $errores['generic'][] = "El usuario no se a insertado correctamente";
             // Si no se puede insertar el usuario hacemos un rollback
             $conn->rollback();
         } else {
             // Almacenamos los errores los errores
             $errores[] = $error;
             $conn->rollback();
             return Validaciones::resultado($errores);
         }
     } else {
         $errores['generic'][] = "No se han recivido datos";
         return Validaciones::resultado($errores);
     }
 }
Пример #4
0
 public static function update($id)
 {
     // Primero tenemos que preparar un bloque try catch
     $errores = [];
     if ($_POST) {
         // Validamos todas las variables de $_POST
         $_POST = Validaciones::sanearEntrada($_POST);
         // empezamos la transacción
         $conn = Database::getInstance()->getDatabase();
         $conn->beginTransaction();
         if (is_array($ErrorOId = PersonaModel::update())) {
             $errores[] = $ErrorOId;
             $conn->rollback();
             return Validaciones::resultado($errores);
         } elseif ($ErrorOId === false) {
             $conn->rollback();
             return $errores['generic'][] = "El cliente no se ha insertado correctamente";
         } else {
             // Comprobaos los campos requeridos en la tabla
             if (isset($_POST["nombreCorp"])) {
                 $_POST["nombreCorp"] = Validaciones::saneamiento($_POST["nombreCorp"]);
                 if (($err = Validaciones::validarNombreCorporativo($_POST["nombreCorp"])) === true) {
                     try {
                         $conn = Database::getInstance()->getDatabase();
                         $ssql = "UPDATE cliente set nombre_corporativo = :nombreCorp WHERE id=:id";
                         $prepare = $conn->prepare($ssql);
                         $prepare->bindParam(":nombreCorp", $_POST["nombreCorp"], PDO::PARAM_STR);
                         $prepare->execute();
                         if ($prepare->rowCount() === 1) {
                             return $errores["nombreCorp"][] = "El nombre corporativo ya existe";
                         }
                     } catch (PDOException $e) {
                         return $errores['generic'][] = "Error en la base de datos";
                     }
                     try {
                         $conn = Database::getInstance()->getDatabase();
                         $ssql = "insert into cliente (id, nombre_corporativo) values (:id, :nombreCorp)";
                         $prepare = $conn->prepare($ssql);
                         $prepare->bindParam(":id", $ErrorOId, PDO::PARAM_INT);
                         $prepare->bindParam(":nombreCorp", $_POST["nombreCorp"], PDO::PARAM_STR);
                         $prepare->execute();
                         if ($prepare->rowCount() === 1) {
                             $conn->commit();
                             return true;
                         }
                         return false;
                     } catch (PDOException $e) {
                         return $errores['generic'][] = "Error en la base de datos";
                     }
                 } else {
                     $conn->rollback();
                     return $err;
                 }
             } else {
                 $conn->rollback();
                 return $errores["nombreCorp"][] = "El nombre corporativo no se ha recibido";
             }
         }
     } else {
         $errores['generic'][] = "No se han recivido datos";
         return Validaciones::resultado($errores);
     }
 }