Requisitos:
- XAMPP Control Panel.
- MySQL Workbench o phpMyAdmin.
- Visual Studio Code o Sublime Text 3
- CodeIgniter v3.1 (Framework PHP)
- Bootstrap 5 (HTML5 y CSS3)
Lo que veremos en este tutorial:
- Descargar CodeIgniter v3.1.x.
- Crear la base de datos en MySQL.
- Crear la tablas de base de datos en MySQL
- Configurar archivos de la aplicación en CodeIgniter.
- Crear e implementar modelo de datos registre en CodeIgniter .
- Crear e implementar controlador registre en CodeIgniter .
- Crear e implementar vista en CodeIgniter .
- Conclusiones acerca del REGISTRO de USUARIOS.
1. Descargar CodeIgniter v3.
Recuerda que debes levantar los servicios de Apache y MySQL desde el XAMPP Control Panel y el directorio final del proyecto debe estar creado en el htdocs.
2. Crear la base de datos en MySQL.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | CREATE TABLE `user` ( `user_id` int(12) NOT NULL, `name` varchar(50) DEFAULT NULL, `user_name` varchar(50) NOT NULL, `email` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `status` int(1) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Indexes for table `user` -- ALTER TABLE `user` ADD PRIMARY KEY (`user_id`), ADD UNIQUE KEY `email` (`email`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `user` -- ALTER TABLE `user` MODIFY `user_id` int(12) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1; |
3. Configurar archivos de la aplicación.
Después de crear la base de datos, seguidamente pasamos a configurar los archivos en relación al ecosistema del Framework CodeIgniter:
3.1. Se agregará la url base de nuestro proyecto en el parámetro $config['base_url'] del archivo config.php:
RUTA DEL ARCHIVO: ..\sign-up-app-web-with-codeigniter\application\config\config.php
PARAMÉTRO: $config['base_url'] = 'http://localhost/sign-up-app-web-with-codeigniter/';
Recordemos que puedes aplicar $_SERVER para controlar las rutas y ubicaciones de script en relación a PHP.
RUTA DEL ARCHIVO: ..\sign-up-app-web-with-codeigniter\application\config\database.php
'username' => 'root',
'password' => '',
'database' => 'demo',
'dbdriver' => 'mysqli',
3.3. Asignar el controlador inicial por defecto desde el archivo routes.php:
..\sign-up-app-web-with-codeigniter\application\config\routes.php
$route['default_controller'] = 'users/register';
4. Crear e implementar modelo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <?php /** * Description of Export Controller * @author Hadson Paredes * @email info@hadsonpar.com */ defined('BASEPATH') or exit('No direct script access allowed'); class Users_model extends CI_Model { // declare private variable private $_userID; private $_name; private $_userName; private $_email; private $_password; private $_status; public function setUserID($userID) { $this->_userID = $userID; } public function setName($name) { $this->_name = $name; } public function setUserName($userName) { $this->_userName = $userName; } public function setEmail($email) { $this->_email = $email; } public function setPassword($password) { $this->_password = $password; } public function setStatus($status) { $this->_status = $status; } //function create User public function createUser() { $data = array( 'name' => $this->_name, 'email' => $this->_email, 'user_name' => $this->_userName, 'password' => $this->_password, 'status' => $this->_status, ); $this->db->insert('user', $data); return $this->db->insert_id(); } } |
Los modelos son clases que están diseñadas para trabajar con información en relación a la base de datos.
5. Crear e implementar controlador.
Implementar las funciones necesarias para cumplir con la lógica en nuestro controlado con la finalidad de logra nuestra funcionalidad CRUD; recuerde, que las explicaciones están en la cabecera de cada función o acción que se realiza:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | <?php /** * Description of Export Controller * @author Hadson Paredes * @email info@hadsonpar.com */ defined('BASEPATH') or exit('No direct script access allowed'); class Users extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('Users_model', 'user'); } // Dashboard public function index() { $data['title'] = 'Dashboard - Hasonpar'; $data['metaDescription'] = 'Dashboard'; $data['metaKeywords'] = 'Dashboard'; $this->load->view('users/confirmation', $data); } // Register public function register() { $data['title'] = 'Sign Up - Hadsonpar'; $data['metaDescription'] = 'SignUp'; $data['metaKeywords'] = 'SignUp'; $this->load->view('users/index', $data); } // Action SignUp public function actionSignUp() { $this->load->library('form_validation'); // field name, error message, validation rules $this->form_validation->set_rules('name', 'Name', 'required'); $this->form_validation->set_rules('username', 'User Name', 'trim|required|min_length[4]'); $this->form_validation->set_rules('email', 'Your Email', 'trim|required|valid_email'); $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]'); $this->form_validation->set_rules('confirm_password', 'Password Confirmation', 'trim|required|matches[password]'); if ($this->form_validation->run() == FALSE) { $this->register(); } else { // post values $name = $this->input->post('name'); $username = $this->input->post('username'); $email = $this->input->post('email'); $password = $this->input->post('password'); // set post values $this->user->setName($name); $this->user->setUserName($username); $this->user->setEmail($email); $this->user->setPassword(MD5($password)); $this->user->setStatus(1); // insert values in database $this->user->createUser(); redirect('users/index'); } } } |
Un controlador (controller) simplemente es un archivo de tipo clase cuyo nombre se asociar con una URI determinada.
6. Crear e implementar vista.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <?php $this->load->view('templates/header'); ?> <main role="main"> <div class="container"> <div class="row" id="sign-up-form"> <div class="col-6 text-left"> <img src="<?php print HTTP_IMAGES_PATH; ?>sign-up.png" alt="Hadsonpar"> </div> <div class="col-6"> <form action="<?php echo base_url(); ?>users/actionsignup" method="post" id="loginform" name="Login_Form" method="POST"> <h3 class="form-signin-heading">Sign Up form with CodeIgniter</h3> <?php if (validation_errors()) { ?> <div class="alert alert-danger"> <?php echo validation_errors(); ?> </div> <?php } ?> <div class="form-group"> <label for="name">Nombres y Apellidos</label> <input type="text" class="form-control" id="name" name="name" placeholder="Nombres y Apellidos*" required /> </div> <div class="form-group"> <label for="name">Usuario</label> <input type="text" class="form-control" id="user-name" name="username" placeholder="Usuario*" required /> </div> <div class="form-group"> <label for="name">Email</label> <input type="email" class="form-control" id="email" name="email" placeholder="Email*" required /> </div> <div class="form-group"> <label for="name">Password</label> <input type="password" class="form-control" id="password" name="password" placeholder="Password" required /> </div> <div class="form-group"> <label for="exampleInputPassword1">Confirmar Password</label> <input type="password" class="form-control" id="password-confirm" name="confirm_password" placeholder="Confirm Password" required /> </div> <div class="form-group"> <button type="submit" class="btn btn-primary">CREATE ACCOUNT</button> <div> </form> </div> </div> </div> </main> <?php $this->load->view('templates/footer'); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php $this->load->view('templates/header'); ?> <br> <main role="main" class="text-center"> <div id="confirmation"> <div> <img src="<?php echo HTTP_IMAGES_PATH; ?>user-check-icon.png" alt=""> <h1>Confirmación...</h1> <h2>Su registro se completo satisfactoriamente</h2> <h3>Gracias por registrarse!</h3> </div> <hr> <div> <div class="col-lg-8"> <a href="<?php echo base_url(); ?>users/register" class="btn btn-sm btn-primary" style="float:right"><i class="fa fa-user"></i> Register</a> <a class="btn btn-danger btn-sm" href="http://blog.hadsonpar.com/2022/02/php-y-mysql-web-api-crud-con-codeigniter.html" target="_blank"><i class="fa fa-cloud-upload"></i> CodeIgniter - Crear Web API RESTful</a> </div> </div> </div> </main> <br> <?php $this->load->view('templates/footer'); ?> |
Recordemos que también se crearon las vista footer, header y menus en el sub directorio templates.
7. Conclusiones acerca del REGISTRO de USUARIOS
En esta primer tutorial creamos nuestra tabla user en nuestra base datos demo, seguidamente creamos el modelo, controlar en relación a la tabla user; asimismo, crearemos la vistas correspondiente para realizar el registro teniendo en consideración las validaciones realizadas por cada inpunt en base a la librería form_validation (validación desde el controlador), finalmente creamos nuestros recursos de tipo template como footer, header y menus e innovar en las vistas principales.
0 Comentarios