1

jqueryとajaxを介してライトボックスにログインしようとしています。私の目標は、ユーザーがログインに成功した後、特別なサイトにリダイレクトされることです。

jQuery.ajax を介したログインは正常に機能しますが、ユーザーがログインしている場合はリダイレクトされ、ログインしていない場合はログイン サイトにとどまることを希望します。これまでの私のコードは次のとおりです。

$(".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;  

});

ajaxリクエストは正常に実行されましたが、phpからコールバックを生成して、ユーザーがログインしていないことをjsに通知し、「window.location」経由でリダイレクトしないようにすることはできますか? この場合、php でのログインが成功したかどうかに関係なく、とにかくリダイレ​​クトされます。

ログイン機能は同じページ (php) にあり、ユーザー名とパスワードで動作しています。

この問題について何らかの助けを得ることができれば幸いです。

心から。

4

3 に答える 3

0

たとえば、php ログイン関数が json オブジェクトを返すようにします。

// 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'))); 
}

次に、jquery コードは次のようになります。

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');

json を使用すると、複数のパラメーターや翻訳されたメッセージなどをポストバックする機能が得られるため、一般的にはtrue/false、php ファイルで単にエ​​コーするよりも優れています。

于 2013-05-10T13:54:32.193 に答える