2013-05-10 2 views
1

J'essaie de me connecter dans une lightbox via jquery et ajax. Mon but est que, après que l'utilisateur se connecte avec succès, il est redirigé vers un site spécial.Ajax Login Form - Rappel en PHP?

La connexion via jQuery.ajax fonctionne bien, mais je voudrais que dans le cas où l'utilisateur est connecté, il est redirigé, au cas où il n'est pas connecté, il reste sur le site de connexion. Voici mon code à ce jour:

$(".logmein").click(function() { 
    var username = $("input#username").val(); 
    var password = $("input#password").val();   
    var dataString = 'username='+ username + '&password=' + password + '&login=Login' ; 

    $.ajax({ 
     type: "POST", 
     url: "<?php echo $_SERVER['PHP_SELF']; ?>", 
     data: dataString, 
     success: function() { 
      window.location = "http://test.home/kundenbereich.html"; 
      $('#login_form').html("<div id='message'>Superb</div>"); 
     } 
    }); 
    return false; 

}); 

La demande ajax est effectuée avec succès, mais je peux générer un rappel de php pour informer js que l'utilisateur n'est pas connecté, puis ne le redirect via « window.location "? Dans ce cas, il est redirigé de toute façon, peu importe si le login en php a réussi ou non!

La fonction de connexion est sur la même page (php) et fonctionne avec nom d'utilisateur et mot de passe.

Ce serait formidable d'obtenir de l'aide sur ce problème.

Sincèrement.

Répondre

0

PHP:

if (Fe_User::Login($this->getPost('username'), $this->getPost('password'))){ 
    echo "true"; 
} 
else{ 
    echo "false"; 
} 

Script:

$.ajax({ 
     type: "POST", 
     url: "<?php echo $_SERVER['PHP_SELF']; ?>", 
     data: dataString, 
     success: function(response) { 
      if(response == "true"){ 
      $('#login_form').html("<div id='message'>Superb</div>"); 
      window.location = "http://test.home/kundenbereich.html"; 
      } 
     } 
}); 
+0

i essayé: $ ajax ({ \t \t Type \t: "POST", \t \t \t url:. « », \t \t \t données: datastring, \t \t \t succès: function (réponse) { \t \t \t \t if (response.result == « Suc CESS) { \t \t \t \t \t \t window.location = « http: //test.home/kundenbereich.html " \t \t \t} \t \t \t \t else { \t \t \t \t \t $ ('# login-form') html ("

Error
«); \t \t \t \t \t $ ('# login- form '). append ("

Nous serons en contact bientôt.

") \t \t \t \t} \t \t \t \t \t \t \t \t \t} \t \t \t}); – user2370234

+0

et dans la section php: if (Fe_User :: Login ($ this-> getPost ('nom d'utilisateur'), ​​$ this-> getPost ('mot de passe'))) { \t \t \t // $ this-> redirect (CLIENTSTART_DE); Exit (json_encode (array = 'result' => 'success', 'message' => 'Connecté avec succès!'))); \t \t \t echo vrai; \t \t \t \t \t} else { \t \t \t sortie (json_encode (array ('résultat' => 'erreur', 'message' => 'avec succès enregistré pas!))); \t \t \t $ error = VRAI; \t \t \t echo false; \t \t \t \t \t} – user2370234

+0

@ user2370234 .. voir modifier dans ma réponse .. utiliser ce code et voir si elle fonctionne ou non –

0

Faites votre php fonction de connexion retour un objet JSON par exemple:

// login.php page : 
[...] 
if (some_auth_system_log_user_in($username, $password)) { 
    exit(json_encode(array('result'=>'success', 'message'=>'Logged in successfully!'))); 
} else { 
    exit(json_encode(array('result'=>'error', 'message'=>'Some error'))); 
} 

Ensuite, le code jquery serait être:

var username = $("input#username").val(); 
var password = $("input#password").val(); 
$.post('login.php', {username:username, password:password}, function(response){ 
    if (response.result == 'success') { 
    // redirect 
    } else { 
    // do something with response.message here 
    } 
}, 'json'); 

En utilisant JSON vous donne la possibilité de republier plusieurs params, ou messages traduits, etc, donc en général est mieux qu'un simple écho true/false dans votre fichier php

0

Il a travaillé quand je frappé légèrement la sortie à le début du fichier php et laissez-le mourir(); après avoir sorti la valeur ajax. Il n'a pas fonctionné parce que j'utilise le même document pour la sortie d'ajax, donc la réponse était le balisage entier de la page.

Merci pour votre aide