<?php
namespace App\Controllers;use App\Models\User;use Respect\Validation\Validatoras valid;classUsersControllerextendsBaseController{publicfunctiongetAddUserAction($request){ $responseMessage =null; $findMessages =null;if($request->getMethod()=='POST'){ $postData = $request->getParsedBody();//Se valida que tanto el nombre como la contraseña no tengan espacios en blanco, esten vacías y sean de entre 1 y 16 caracteres $userValidator = valid::key('name',valid::stringType()->notEmpty()->noWhitespace()->length(1,16))->key('password',valid::stringType()->notEmpty()->noWhitespace()->length(1,16))->key('passwordc',valid::stringType()->notEmpty()->noWhitespace()->length(1,16));try{ $userValidator->assert($postData); $postData = $request->getParsedBody();//Se comprueba que la contraseña confirmada es la mismaif($postData['password']== $postData['passwordc']){ $user =newUser(); $user->name = $postData['name'];//Se usa password_hash para ocultar la contraseña $hashed_password =password_hash($postData['password'],PASSWORD_DEFAULT); $user->password = $hashed_password; $user->save(); $responseMessage ='User Registered';}else{ $responseMessage ='Password is not the same';}}catch(\Exception $e){//Dependiendo el error al escribir la contraseña se muestran distintas alertas $findMessages = $e->findMessages(['noWhitespace'=>'No se permiten espacios en blancos','noEmpty'=>'Falta información por llenar','length'=>'Tanto la contraseña como el nombre debe tener entre 1 y 16 caracteres']);}}return $this->renderHTML('addUser.twig',[//responseMessage es una cadena de texto, y findMessagges un array'responseMessage'=> $responseMessage,'findMessages'=> $findMessages
]);}}
No olviden crear la ruta para agregar usuarios en el index.php! (Entrada de aplicacion
)
La verdad éste tipo de retos es replicar lo que hemos aprendido hasta ahora. Al que pueda interesarle comparto mi proyecto en GitHub GitHub.
Aquí el código de lo que hice
Crear un archivo para UsersController.php y adaptar el código que hicimos en JobsController.php asi:
En nuestro directorio public, en index.php agregamos nuestras nuevas rutas (yo tengo curso-PHP porque en mi htdocs tengo el proyecto guardado en éste directorio)
Espero que les sirva. Saludos desde Bremen en Alemania.
No me funciona y no parece que el problema este en el codigo sino en el seteo de la base de datos. Asi lo tengo:
@harry-saenz-arias el error está en la longitud del varchar de tu base de datos. La funcion password_hash() crea una cadena muy larga para que sea de 20. Fíjate en el Tipo de la columna password, que la tienes en 20. Si la pones en 255 te alcanza para almacenar el hash.
Esto en Visual C# me hubiera tomado 5 minutos -.- y aqui me tomo casi 2 horas por detallitos que aun se me escapan en PHP. Jajaja que divertido!. Por fin le voy agarrando la onda a este lenguaje!
Ayuda por favor! Para la universidad tuve que descargar e instalar MySQL mediante su respectivo installer. Pero al hacerlo tuve que cambiar los puertos de Xampp, ahora mis DB y mis tablas desaparecieron y el usuario de pma lo borro tambien.
Ya logre crear el usuario pma y los errores que estaban en phpMyAdmin se los logre elimnar.
Ya cree una tabla 'jobs' la cual muestra su contenido en la pagina si los agrego manualmente a la tabla, pero ahora la vista de 'addJob' no funciona, no guarda nada. Me pueden ayudar?
Hola Amigo, déjanos ver el código para poder brindarte una mejor ayuda.
Buenas me ayudan? Cree la tabla User y la clase user pero cuando intento guardar me guarda el registro en Blanco. Alguien sabe porque?
Debo crear una clase que sea padre de user?
Necesitamos código para poder ayudarte, lo que puedes hacer es hacer el var_dump al $request para ver si te esta enviando los datos