JQuery AJAX PHP логин - PullRequest
       2

JQuery AJAX PHP логин

0 голосов
/ 27 января 2012

У меня есть форма входа с использованием jquery ajax и php-кода. Проблема в том, что он всегда возвращает ошибку, а не регистрирует меня в системе. Я потратил несколько дней, пытаясь найти ошибку, но не могу. Веб-страница не отображает ошибок, если я посещаю ее напрямую. Раньше это работало около недели назад, пока я случайно не удалил jquery, и теперь я не могу заставить его работать.

Вот код PHP:

include('.conf.php');
$user = $_POST['user'];
$pass = $_POST['pass'];
$result = mysql_query("SELECT * FROM accountController WHERE username = '$user'");
while ($row = mysql_fetch_array($result)) {
    if (sha1($user.$pass) == $row['pword']) {
        setcookie('temp', $row['username']);
        session_start();
        $_SESSION['login'] = 1;
        $_SESSION['uname'] = $row['username'];
        echo "success";
    }
} 

и вот код Jquery AJAX:

var username = $('#main_username').val();
var password = $('#main_pword').val();
    $('.mainlogin').submit(function() {
        $.ajax({
            url: 'log.php',
            type: 'POST',
            data: {
              user: username,
              pass: password
            },
            success: function(response) {
                if(response == 'success') {
                    window.location.reload();
                } else {
                    $('.logerror').fadeIn(250);
                }
            }
        });
        return false;
    });

Как бы я проверил, чтобы увидеть, что возвращается, как пустое или успешно с сервера. Есть ли расширение для сафари? Спасибо!

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Вставьте это вместо. Он выдаст ответ сервера во всплывающем окне.

 success: function(response) {
     alert(response);
 }

Со своей стороны PHP, попробуйте вывести больше вещей - добавьте }else{ в оператор if, который возвращает некоторые полезные данные, например

 }else{
    print("Post is: \n");
    print_r($_POST);
    print("\nMySQL gave me: \n");
    print_r($row); 
 }

Просто убедитесь, что вы не оставляете его, как только оно заработает!

Ищите:

  • хеш отличается
  • поле дб отличается
  • Поля БД по какой-то причине не заполнены
  • Данные POST неверны / неправильные имена полей

Редактировать: вот еще одна проблема: ваши первые четыре строки должны быть:

    $('.mainlogin').submit(function() {
        var username = $('#main_username').val();
        var password = $('#main_pword').val();
        $.ajax({

Ваш код в том виде, в каком он есть, получает значения перед отправкой формы - при загрузке - когда они пусты, и в результате отправляет пустые строки на сервер в виде имени пользователя и пароля.

0 голосов
/ 27 января 2012

Посмотрите на код, который у меня есть в этом ответе здесь: пользователь проверяет доступность с помощью jQuery

Вам нужно json кодировать свой ответ, также Firefox имеет Firebug, который вы можете использовать для просмотрав вашем посте и ответе на ajax, Chrome и IE есть инструменты разработчика

Safari также имеет инструменты разработки: http://developer.apple.com/technologies/safari/developer-tools.html

Проверьте консоль, чтобы увидеть, что происходит с вашим AJAX

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