2010-05-26 7 views
0
$(document).ready(function() { 

    $("form#login_form").submit(function() { 

    var login_username  = $('#login_username').attr('value'); 
    var login_password  = $('#login_password').attr('value'); 
     type: "POST", 
     $.ajax({ 
      url: "login.php", 
      data: "username="+ login_username +"& password="+ login_password, 
      success: function(data){ 
       alert(data); 
       if (data == "ok"){ 
        $('form#login_form').hide(function(){$('div.success').fadeIn();}); 
        } 
       } 
     }); 
    return false; 
    }); 

login.php:ajax problème de connexion

<?php 
    include("settings.php"); 
    $query = "select * from users where username = '{$_POST['login_username']}' and password = md5('{$_POST['login_password']}')"; 
    $query = mysql_query($query, $connection); 
     if (mysql_num_rows($query) == 1) 
     {  
      print "ok"; 
      $array = mysql_fetch_array($query); 
      if ($_POST['stay']) { $time = time()+2592000; } 
      else { $time = 0; } 
     } 
     else { print "no"; } 
     mysql_close($connection); 
    ?> 

Mon problème: Dans l'alerte le message toujours "non" si le nom d'utilisateur/mot de passe est correct, mais sur le site "ok" apparaît lorsque le nom d'utilisateur/pw est correct.

J'ai lu les autres questions en rapport avec ce problème, mais je n'ai pas pu résoudre le problème de réponse de login.php avec Json. Pourriez-vous m'aider comment devrais-je répondre à l'appel ajax? (avec un code si c'est possible) Merci beaucoup, et désolé de vous poser à nouveau la question.

+0

Toujours toujours toujours échapper les paramètres de requête qui proviennent du client. –

+0

essayez d'utiliser $ ('# usernameFormId'). Serialize() au lieu de "username =" + login_username + "& mot de passe =" + login_password. – Fahad

Répondre

0

Vous recherchez login_username et login_password, mais de jQuery vous envoyez username et password, je changerais votre data à ceci:

data: {"login_username": login_username, "login_password": login_password}, 

Dans votre PHP, vous devriez escape the posted string though, comme ceci:

$query = sprintf("select * from users where username = '%s' and password = md5('%s')", 
       mysql_real_escape_string($_POST['login_username']), 
       mysql_real_escape_string($_POST['login_password'])); 
+0

Tout d'abord, merci pour vos commentaires vraiment, mais je dois être le noob, mais j'ai changé la ligne de données à la vôtre, et le $ query = .. exactement à la vôtre. Mais toujours dans l'alerte, (je l'imprime) tout ce que j'écris dans les 2 entrées, le message toujours comme: sélectionnez * des utilisateurs où username = "" et mot de passe = md5 ("") .. et c'est pourquoi il ne va pas dans la partie droite du si, le fait. Cependant, sur le site, la requête $ apparaît correctement avec le nom d'utilisateur/pw donné, et ok apparaît aussi: ((( – rdanee

+0

@rdanee - est le 'type:" POST ",' dans votre '$ .ajax ({})', J'ai supposé que c'était une erreur de publication, mais cela doit être à l'intérieur, sinon c'est un GET pas un POST –

+0

Merci à tous pour votre aimable attention, surtout le vôtre Nick :) J'étais stupide, désolé. – rdanee

0

Voir la ligne « données »:

$(document).ready(function() { 

    $("form#login_form").submit(function() { 

    var login_username  = $('#login_username').attr('value'); 
    var login_password  = $('#login_password').attr('value'); 
     type: "POST", 
     $.ajax({ 
      url: "login.php", 
      data: {"username": login_username, "password": login_password}, 
      success: function(data){ 
       alert(data); 
       if (data == "ok"){ 
        $('form#login_form').hide(function(){$('div.success').fadeIn();}); 
        } 
       } 
     }); 
    return false; 
    }); 

et d'échapper à vos paramètres POST lors de leur utilisation dans une requête de base de données!

0

Votre requête renvoie peut-être plus d'une ligne. Ou pas de lignes