Ajax signifie que votre contrôleur de connexion retournera machine quelque chose lisible (JSON/XML) plutôt que html.
Votre contrôleur a vraiment besoin de définir une variable de session.
class Login extends Controller {
function __construct() {
parent::Controller();
$this->load->model('user_m');
}
function json_login() {
$user = $this->user_m->get_user($_POST['username']);
if($user->password == md5($_POST['password'])) {
$this->session->set_userdata('username',$user->username);
print json_encode($this->user);
}
else {
print json_encode(FALSE);
}
return;
}
function logout() {
$this->session->destroy();
redirect('/theloginpage');
}
}
En supposant que vous utilisez jquery pour le javascript l'appel ajax pourrait en tirer quelque chose comme ceci:
$('#login_form').submit(function(event) {
event.preventDefault();
$.ajax({
type:"POST",
data:$(this).serialize(),
dataType:"json",
url:"/login/json_login",
success: function(data) {
if(data['username'] != null) {
$(this).append('<p>You are now logged in</p>');
reload_table_data();
}
else if(data == flase){
$(this).append('<p>Fail whale, wrong username or password</p>');
}
}
});
}
maintenant lors de l'affichage de la vérification des données si le « nom d'utilisateur » a été mis à la session.N'oubliez pas non plus de créer une méthode de déconnexion qui détruit la session. Vous pouvez renvoyer les données de la table sous la forme d'un extrait html et l'insérer directement dans la boucle DOM ou json/xml. Le formulaire de connexion peut être affiché n'importe où sur la page et il y a beaucoup de bibliothèques pour jquery, dojo, prototype, etc. qui fourniront une boîte de dialogue.