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); }
/** * 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); } }
/** * 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); } }
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); } }