Nuevamente muchas gracias por tus valiosos aportes, en especial por el de las sesiones, ya tengo implementado el multiidiomas en el formulario web (solamente me faltó ponerle banderitas). dejo el código para una mejora.
Primero, en la ruta system/language/english crear el archivo
english_lang.php y su contenido es:
Código PHP:
Ver original<?php
$lang['email'] = "E-mail:";
$lang['password'] = "Password:";
$lang['login'] = "Log in";
?>
Segundo, en la ruta system/language/spanish crear el archivo
spanish_lang.php y su contenido es:
Código PHP:
Ver original<?php
$lang['email'] = "Correo electrónico:";
$lang['password'] = "Contraseña";
$lang['login'] = "Ingresar";
?>
Publico el código del controlador y la vista nuevamente ya que los modifiqué, los demás archivos están iguales:
Controlador (php.php):
Código PHP:
Ver original<?PHP
class Php extends CI_Controller {
function login($idioma=null)
{
//cargo el helper de url, con funciones para trabajo con URL del sitio
$this->load->helper('url');
//cargo el helper de formulario
$this->load->helper('form');
//selccionar el idioma:
$this->config->set_item('language', 'english');//idioma por defecto
$this->lang->load('english','english');
$idioma="en";
}
elseif($idioma=="en"){//cargar inglés
$this->config->set_item('language', 'english');
$this->lang->load('english','english');
}
elseif ($idioma=="es"){//cargar español
$this->config->set_item('language', 'spanish');
$this->lang->load('spanish','spanish');
}
$data['idioma']=$idioma; // guardar el parámetro "idioma" en el array "data" que luego será transmitido a la vista
//Si no recibimos ningún valor proveniente del formulario, significa que el usuario recién ingresa:
if(!isset($_POST['maillogin'])){ //Por lo tanto le presentamos la pantalla del formulario de ingreso:
$this->load->view('login',$data);
}
else{//Si el usuario ya pasó por la pantalla inicial y presionó el botón "Ingresar"
//Configuramos las validaciones ayudandonos con la librería form_validation del Framework Codeigniter
$this->form_validation->set_rules('maillogin','e-mail','required|valid_email');
$this->form_validation->set_rules('passwordlogin','password','required');
//Verificamos si el usuario superó la validación
if(($this->form_validation->run()==FALSE)){
//En caso que no, volvemos a presentar la pantalla de login
$this->load->view('login',$data);
}
else{//Si ambos campos fueron correctamente rellanados por el usuario,
$this->load->model('usuarios_model');
//Comprobamos que el usuario exista en la base de datos y la password ingresada sea correcta
$ExisteUsuarioyPassoword=$this->usuarios_model->ValidarUsuario($_POST['maillogin'],$_POST['passwordlogin']);
//La variable $ExisteUsuarioyPassoword recibe valor TRUE si el usuario existe y FALSE en caso que no. Este valor lo determina el modelo.
if($ExisteUsuarioyPassoword){
/*Si el usuario ingresó datos de acceso válido,
Muestro la vista principal de lo que sería mi aplicación,
enviándole como dato el usuario
*/
$data['usuario']=$_POST['maillogin'];
//Lo regresamos a la pantalla de login y pasamos como parámetro el mensaje de error a presentar en pantalla
$this->load->view('principal',$data);
}
else{//Si no logró validar
$data['error']="E-mail o password incorrecta, por favor vuelva a intentar";
//Lo regresamos a la pantalla de login y pasamos como parámetro el mensaje de error a presentar en pantalla
$this->load->view('login',$data);
}
}
}
}
}
?>
En la vista (login.php) tengo:
Código PHP:
Ver original<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Blogdephp.com, ¿cómo hacer un login de usuarios en php? Ver script y demo!</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="http://www.blogdephp.com/script/php-login.css" type="text/css" media="screen">
<!--<link rel="stylesheet" href="../../php-login.css" type="text/css" media="screen">-->
</head>
<body style="margin-top:0px">
<?php echo form_open('php/login/'.$idioma); ?>
<div class="Info">
<p class="Titulo">Demo: ¿cómo hacer un login de usuarios en php?</p>
<p> </p>
</div>
<div id="LoginUsuarios">
<a href="<?php echo site_url("/php/login/es");?>">Español</a>
<a href="<?php echo site_url("/php/login/en");?>">English</a>
<div class="fila">
<div class="LoginUsuariosCabecera"><?php echo $this->lang->line('email'); ?></div>
<div class="LoginUsuariosDato"><input type="text" name="maillogin" value="<?PHP set_value('maillogin'); ?>" size="25" /></div>
<div class="LoginUsuariosError">
<?PHP
echo "<p>".$error."</p>";
}
echo form_error('maillogin');
?>
</div>
</div>
<div class="fila">
<!--<div class="LoginUsuariosCabecera">Contraseña:</div>-->
<div class="LoginUsuariosCabecera"><?php echo $this->lang->line('password'); ?></div>
<div class="LoginUsuariosDato"><input type="password" name="passwordlogin" value="<?PHP set_value('passwordlogin'); ?>" size="25" /></div>
<div class="LoginUsuariosError"><?PHP form_error('passwordlogin');?></div>
</div>
<div class="fila">
<div class="LoginUsuariosCabecera"></div>
<div class="LoginUsuariosDato"></div>
</div>
<div class="fila">
<div class="LoginUsuariosCabecera"><input type="submit" value="<?php echo $this->lang->line('login'); ?>"></div>
<div class="LoginUsuariosDato"></div>
</div>
</div>
<p> </p>
<p> </p>
</form>
<div class="Info">
<p><strong><u>Datos de acceso</u></strong> (correspondiente a un usuario ya ingresado en la base de datos)</p>
<p><strong>password</strong>: blogdephp</strong></p>
</div>
<p> </p>
<p> </p>
<div class="Info">
<p><strong><u>Requerimientos</u></strong></p>
<p>Para poder implementar este script de login, se requiere el framework de php "Codeigniter"</p>
<p>(esta maravillosa herramienta nos ayuda a ahorrar mucho tiempo y esfuerzo en nuestros trabajos de programación php).</p>
<p> </p>
</div>
<div class="Info">
</div>
</body>
</html>
Como dije, en la vista solo me faltaron las banderitas XD.
CodeIgniter, vi tu respuesta sobre cómo trabajar con sesiones cuando recién terminaba las modificaciones según tus indicaciones, ¿qué opinas de trabajrlo así? ¿siempre quedaría mejor con sesiones?.
Nuevamente muchas gracias