проблема входа в AJAX - PullRequest
0 голосов
/ 26 мая 2010
    $(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:

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

Моя проблема: в предупреждении всегда отображается сообщение «нет», правильно ли указано имя пользователя / пароль, однако на сайте «ОК» отображается, когда имя пользователя / пароль верное.

Я прочитал другие вопросы, связанные с этой проблемой, но я не смог решить проблему с ответом из login.php с помощью Json. Не могли бы вы помочь мне, как я должен ответить на вызов ajax? (с кодом, если это возможно) Большое спасибо, и извините за повторный опрос.

Ответы [ 3 ]

0 голосов
/ 26 мая 2010

Вы ищете login_username и login_password, но из jQuery, который вы отправляете username и password, я бы изменил ваш data на этот:

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

В вашем PHP вы должны экранировать опубликованную строку через , например:

$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 голосов
/ 26 мая 2010

Возможно, ваш запрос возвращает более 1 строки. Или нет строк

0 голосов
/ 26 мая 2010

См. Строку «данные»:

   $(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;  
     });

И экранируйте свои параметры POST при использовании их в запросе к базе данных!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...