No he conseguido que funcione el código anterior, pero gracias a la web de
David Rojas y un poco de paciencia he conseguido crear un código que realiza la validación de un mail y una contraseña introducidos en un formulario.
Para conseguir que funcione, debéis crear una tabla usuario, con los campos mail y password.
A continuación muestro el código de los diferentes ficheros:
Controlador
formulario.php Código PHP:
class Formulario extends CI_Controller {
public function __construct(){
parent:: __construct();
$this->load->helper(array('url', 'form'));
$this->load->library('form_validation');
$this->load->model('Formulario_model');
}
function index()
{
//establezco las reglas de validación
$this->form_validation->set_rules('email', 'EMail', 'required|valid_email|max_length[50]');
$this->form_validation->set_rules('password', 'Password', 'required|max_length[20]');
//Si no supera las reglas de validación se recarga la vista inciail del formulario
if($this->form_validation->run() == FALSE){
$this->load->view('formulario_login/vista_formulario');
}
else{
//Si la validación es correcta , recogemos los datos y procedeermos a la validación mediante el código insertado en el modelo
$data['email'] = $this->input->post('email');
$data['password'] = $this->input->post('password');
/*otra posible opción para enviar los datos recibidos mediante el formulario sería:
$data['email'] = $_POST['email'];
$data['password'] = $_POST['password'];*/
$numrows = $this->Formulario_model->ValidarUsuario($this->input->post('email'), $this->input->post('password'));
//otra opción sería: $numrows = $this->Formulario_model->ValidarUsuario($_POST['email'], $_POST['password']);
if(!$numrows){//si el número de filas devueltas en la consulta es 0
$this->load->view('formulario_login/vista_formulario_error');
}
else{
$this->load->view('formulario_login/vista_formulario_exito', $data);
}
}
}
}
Modelo:
vista_formulario Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Formulario Login</title>
</head>
<body>
<?php
echo validation_errors();//muestra los errores al enviar los datos del formulario
echo form_open('formulario');
echo form_label('Usuario','email');
echo form_input(array('name' => 'email', 'id' => 'email', 'size' => '50', 'value' => set_value('email')));
echo form_label('Password','password');
echo form_password(array('name' => 'password', 'id' => 'password', 'size' => '20', 'value' => set_value('password')));
echo form_submit('enviar','Enviar');
echo form_close();
?>
</body>
</html>
¡Las tres vistas están dentro de la carpeta formulario_login, fíjense en que la ruta lo indica!
Vista del formulario: vista_formulario.php Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Formulario Login</title>
</head>
<body>
<?php
echo validation_errors();//muestra los errores al enviar los datos del formulario
echo form_open('formulario');
echo form_label('Usuario','email');
echo form_input(array('name' => 'email', 'id' => 'email', 'size' => '50', 'value' => set_value('email')));
echo form_label('Password','password');
echo form_password(array('name' => 'password', 'id' => 'password', 'size' => '20', 'value' => set_value('password')));
echo form_submit('enviar','Enviar');
echo form_close();
?>
</body>
</html>
Vista Éxito: vista_formulario_exito.php Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<h1>"Welcome home <?php echo $email ?>!!!"</h1>
<?php
echo "Usuario: ".$email."<br>";
echo "Password: ".$password['password']."<br>";
echo anchor('formulario', 'Volver al formulario');?>
</body>
</html>
Vista Error: vista_formulario_error.php Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Vista Login Error</title>
</head>
<body>
<h1>ERROR al insertar el usuario o la password!!!</h1>
<?php echo anchor('formulario', 'Volver al formulario');?>
</body>
</html>
Espero que os sirva de ayuda.
Muchas gracias y un cordial saludo a tod@s.