public static function validarEntradaLogin() { $errores = []; if (!$_POST) { $errores['generic'][] = "No he recibido datos"; return Validaciones::resultado($errores); } $_POST = Validaciones::sanearEntrada($_POST); if (strpos($_POST['nick'], "@") === false) { if (($err = Validaciones::validarNick($_POST['nick'])) !== true) { $errores['nick'] = $err; } } else { if (($err = Validaciones::validarEmail($_POST['nick'])) !== true) { $errores['nick'] = $err; } } if (($err = Validaciones::validarPassLogin($_POST['passwd'])) !== true) { $errores['passwd'] = $err; } return Validaciones::resultado($errores); }
/** * Método que gestiona la lógica del alta de un nuevo usuario * @param Array $array Array de datos a validar, sanear e insertar * @return Boolean * True = si se ha dado de alta. * False = si ha habido algún error en el proceso */ public static function alta($array) { if (!$array) { // generamos el error Session::add('feedback_negative', 'No se han recibido datos'); return false; } // hacemos las validaciones if (UsuarioModel::validar($array)) { // Saneamos el array $array = Validaciones::sanearEntrada($array); // Procedemos a la inserción del usuario en la base de datos // Para ello preestablecemos el array que queremos insertar $datos = [':nombre' => $array['nombre'], ':apellido' => $array['apellido'], ':email' => $array['email'], ':pass' => sha1($array['clave'])]; // devolvemos lo que la inserción nos dice return UsuarioModel::insert($datos); // procedemos a la inserción de los datos en la base de datos, // para ello tenemos un método llamado insert } else { return false; } }
public function alta() { // Bloque try catch, para parar cualquier excepción producida // por la conexión try { if ($estado = UsuarioModel::alta($_POST)) { header('Location: /'); exit; } else { // saneamos $_POST y lo mostramos $datos = Validaciones::sanearEntrada($_POST); $datos = ['datos' => $datos]; echo $this->view->render('usuario/index', $datos); //header('Location: /Usuario'); } } catch (PDOException $e) { // llamamos a la vista de error 500 $array = ['msg' => 'Error del servidor, disculpe las molestias.']; echo $this->view->render('error/error500', $array); // modo debbug ON /*echo '<pre>'; echo $e->getMessage();*/ } }
/** * Método que edita una empresas * @param Integer $id ID de la empresa a editar * @param Array $array Datos a actualizar * @return Boolean True = cuando el registro se edita * False = cuando el registro no se edita */ public static function editar($id, $array) { if (!$array) { Session::add('feedback_negative', 'No se han recicibido datos'); return false; } // hacemos las validaciones if ($emp = EmpresaModel::getId($id)) { if ($emp) { $array['id'] = $emp['id']; } if (EmpresaModel::validar($array)) { // Saneamos el array $array = Validaciones::sanearEntrada($array); // Procedemos a la inserción de la empresa en la base de datos // Para ello preestablecemos el array que queremos insertar if (!Session::get('user_id')) { Session::add('feedback_negative', 'No tiene iniciada sesión, por lo tanto no podemos crear la empresa'); return false; } $usuario = Session::get('user_id'); $datos = [':nombre' => $array['nombre'], ':web' => $array['web'], ':descripcion' => $array['descripcion'], ':usuario' => (int) $usuario, ':id' => (int) $id]; // devolvemos lo que la inserción nos dice //d($datos);die; return EmpresaModel::edit($datos); } else { // Como ya existen los errores en Session // simplemente los devolvemos return false; } } else { Session::add('feedback_negative', 'No se ha modificado la empresa'); return false; } }
/** * Método del controlador el cual se encarga de la edición de las ofertas * @param integer $id ID de la oferta a editar */ public function editar($id = 0) { // validamos y saneamos aqui porque vamos a utilizarlo en caso // de que no haya $_POST $id = (int) $id; $id = Validaciones::saneamiento($id); // Bloque try catch para preveer posibles excepciones try { if (!$_POST) { // comprobamos si la oferta que se intenta editar es del usuario // que realiza la petición if (!OfertaModel::comprobarPropiedadOferta($id)) { Session::add('feedback_negative', 'No puedes editar una oferta que no es tuya'); header('Location: /Oferta'); exit; } // mostrar el formulario para poder editar // para ello deberemos recuperar los BD $info = OfertaModel::getId($id); $empresa = OfertaModel::getNombreEmpresa(); $datos = ['titulo' => 'Edición de oferta', 'empresas' => $empresa, 'datos' => $info]; echo $this->view->render("ofertas/formularioOferta", $datos); } else { // tratamos los datos en el modelo if (OfertaModel::editar($id, $_POST)) { Session::add('feedback_positive', 'La oferta ha sido editada'); header('Location: /Oferta'); exit; } else { // existen errores, llamamos a la vista para mostrar los errores // Saneamos $_POST Session::add('feedback_negative', 'La oferta no se ha podido modificar o no se ha modificado nada'); $empresa = OfertaModel::getNombreEmpresa(); $array = Validaciones::sanearEntrada($_POST); $datos = ['datos' => $array, 'empresas' => $empresa]; // mostramos la vista con los datos saneados, // para evitar la inyeción de código echo $this->view->render('ofertas/formularioOferta', $datos); } } } catch (PDOException $e) { // llamamos a la vista de error 500 $array = ['msg' => 'Error del servidor, disculpe las molestias.']; echo $this->view->render('error/error500', $array); // modo debbug ON /*echo '<pre>'; echo $e->getMessage();*/ } }
/** * 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); } }