Lo que veremos hoy es ha registrar usuarios y activar mediante un mensaje de correo electrónico, el siguiente código está desarrollado en php con el framework de CodeIgniter. Te recomiendo que hagas uso de Mailtrap es gratis y sirve para pruebas de este tipo, gmail tiene algunos problemas al momento de enviar correos de activación pero aun así funciona.
Antes de comenzar las siguientes lineas de código no son para copiar, pegar y esperar a que funcione, debes tener conocimiento en este framework.
Instalación
Ya debes tener tu versión de CodeIgniter en tu servidor local, o puedes descargar desde aquí.
Creando nuestra base de datos
Este es el script sql que debes ejecutar en PHPMyAdmin, recuerda el nombre da la tabla.
CREATE TABLE `users` (
`id` int(11) NOT NULL,
`email` varchar(100) NOT NULL,
`password` varchar(50) NOT NULL,
`code` varchar(20) NOT NULL,
`active` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `users`
--
INSERT INTO `users` (`id`, `email`, `password`, `code`, `active`) VALUES
(12, 'admin@gmail.com', '12345', 'wyUoPE3iArMs', 1);
--
-- Indexes for dumped tables
--
--
-- Indexes for table `users`
--
ALTER TABLE `users`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Conectar la aplicación con la base de datos
En la carpeta de la application codeigniter, abrir database.php ubicado en la carpeta de application/config
, y modificar los datos de conexión.
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'verificar',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
Configurando la aplicación
A continuación, configurar la URL base y eliminamos index.php en nuestra página de índice.
En la carpeta de la application codeigniter, abra config.php ubicado en la carpeta de application/config y agregar la dirección donde se encuentra su aplicación
$config['base_url'] = '"http://localhost/activar/';
Definiendo las Rutas
Luego, definimos las rutas nombrando el controlador predeterminado y la ruta para el registro.
Abrir route.php ubicado en la carpeta application/config y actualice con las siguientes líneas de código.
$route['default_controller'] = 'user';
$route['register'] = 'user';
Creando el modelo
Luego crear el modelo para la aplicación. Recuerda que la primera letra del nombre del modelo debe estar en mayúscula y que el nombre del modelo debe ser el mismo que el nombre del archivo para evitar confusiones.
Cree un archivo llamado Users_model.php en la carpeta de application/model luego agregue lo siguiente:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Users_model extends CI_Model {
function __construct(){
parent::__construct();
$this->load->database();
}
public function getAllUsers(){
$query = $this->db->get('users');
return $query->result();
}
public function insert($user){
$this->db->insert('users', $user);
return $this->db->insert_id();
}
public function getUser($id){
$query = $this->db->get_where('users',array('id'=>$id));
return $query->row_array();
}
public function activate($data, $id){
$this->db->where('users.id', $id);
return $this->db->update('users', $data);
}
}
Creando nuestro formulario de registro
Por último, creamos el formulario de registro de la applicación. Puedes usar Bootstrap para esto. Puedes bajarte el código.
register.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Registro y activación por correo electrónico en CodeIgniter</title>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>bootstrap/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1 class="page-header text-center">Verificar activación</h1>
<div class="row">
<div class="col-sm-4">
<?php
if(validation_errors()){
?>
<div class="alert alert-info text-center">
<?php echo validation_errors(); ?>
</div>
<?php
}
if($this->session->flashdata('message')){
?>
<div class="alert alert-info text-center">
<?php echo $this->session->flashdata('message'); ?>
</div>
<?php
}
?>
<h3 class="text-center">Registrar</h3>
<form method="POST" action="<?php echo base_url().'user/register'; ?>">
<div class="form-group">
<label for="email">Email:</label>
<input type="text" class="form-control" id="email" name="email" value="<?php echo set_value('email'); ?>">
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="password" class="form-control" id="password" name="password" value="<?php echo set_value('password'); ?>">
</div>
<div class="form-group">
<label for="password_confirm">Password:</label>
<input type="password" class="form-control" id="password_confirm" name="password_confirm" value="<?php echo set_value('password_confirm'); ?>">
</div>
<button type="submit" class="btn btn-primary">Registrar</button>
</form>
</div>
<div class="col-sm-8">
<h3 class="text-center">Tabla de usuarios</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>UserID</th>
<th>Email</th>
<th>Password</th>
<th>Code</th>
<th>Activación</th>
</tr>
</thead>
<tbody>
<?php
foreach($users as $row){
?>
<tr>
<td><?php echo $row->id; ?></td>
<td><?php echo $row->email; ?></td>
<td><?php echo $row->password; ?></td>
<td><?php echo $row->code; ?></td>
<td><?php echo $row->active ? 'True' : 'False'; ?></td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>