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