JQuery AJAX показывает ошибки проверки формы

0

У меня возникла проблема с показанной ошибкой проверки ниже скрипта, например, что я тестировал, я вводил правильный адрес электронной почты и неправильный пароль, запрос вернет как Wrong email address и Wrong password под каждым input textbox, это не только Wrong Password для показа, я попробовал hardcode требуемые данные в request.php и запускаю этот скрипт напрямую, либо для предоставления неверных данных в $ _POST, и для ответа консоли {"error":{"lemail":"Wrong email address","lpassword":"Wrong password"}}, может кто-нибудь, пожалуйста, взгляните на мой код, что пойдет не так?

форма с вызовом AJAX:

<body>

<form role="form" method="post" id="login_form" enctype="multipart/form-data">
<div class="modal-body">
  <div class="form-group">
    <label for="email">Email</label>
    <input type="email" class="form-control" id="lemail" name="lemail" placeholder="Your email"><span class="error" id="lemail_error"></span>
  </div>
  <div class="form-group">
    <label for="password">Password</label>
    <input type="password" class="form-control" id="lpassword" name="lpassword" placeholder="Password"><span class="error" id="lpassword_error"></span>
  </div>

</div>

<div class="modal-footer">
  <button type="button" class="btn btn-success" id="btn_login" data-loading-text="Loading...">Sign In</button>
</div>
</form>


<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(document).ready(function() {

    $('#btn_login').click(function(){
        var parameters = $('#login_form').serialize();

        $.ajax({
            url: 'inc/callback/request.php',
            type: 'POST',
            data: {'parameters' : parameters},
            dataType: 'json',
            success: function(response){

                if(response.success == 'logged'){
                    $('#login_form')[0].reset();
                    alert(response.success);

                }else if(response.inactivate == 'inactive'){
                    alert('Your account is inactive!');

                }else{
                    $('[id$="_error"]').html(''); //clear valid error msg

                    // display invalid error msg
                    $.each(response.error, function(key, value){
                        if(value){
                            $('#' + key + '_error').html(value);
                        }
                    });
                }
            },
            error: function(){
                console.log(arguments);
            }
        });
    });

});
</body>

request.php

parse_str($_POST['parameters'], $output);

$email = $mysqli->real_escape_string(strtolower(trim($output['lemail'])));
$password = $mysqli->real_escape_string(trim($output['lpassword']));

$func = new Functions();
$message = array();

//validate user email and password from database
$check = $mysqli->query("SELECT * FROM 'users' WHERE user_email='".$email."' AND user_password='".sha1(sha1($password))."'") or die($mysqli->error);
$rows = $check->fetch_array(MYSQLI_BOTH);
$num = $check->num_rows;

$uId = $rows['user_id'];
$uEmail = $rows['user_email'];
$uPwd = $rows['user_password'];
$uType = $rows['account_type'];
$uStatus = $rows['account_status'];

// validate user account
if(empty($email) || $email !== $uEmail){
    $message['error']['lemail']  = 'Wrong email address';
}
if(empty($password) || sha1(sha1($password)) !== $uPwd){
    $message['error']['lpassword'] = 'Wrong password';
}

if(!isset($message['error'])){

    if($uStatus == 0){
        $message['inactivate'] = 'inactive';

    }else{

        $message['success'] = 'logged';
    }
}

echo json_encode($message);

Отредактировано:

Решено! ничего не получилось, просто из-за логики сравнения переменных !! ;П

  • 0
    Цитата ОП: «Решено! Ничего не пошло не так» ~ Тогда, пожалуйста, оставьте ответ ниже или удалите все это. Спасибо.
Теги:
validation

2 ответа

0

Вы отправляете строку без массива, сначала нужно использовать функцию parse_str.

Удалите этот enctype = "multipart/form-data" из формы

<form role="form" method="post" id="login_form">

Замените свои данные: строка с этим

data: {'parameters' : parameters},

После добавления этого на ваш PHP

parse_str($_POST['parameters'], $output);

$email = $mysqli->real_escape_string(strtolower(trim($output['lemail'])));
$password = $mysqli->real_escape_string(trim($output['lpassword']));
  • 0
    могу ли я иметь больше деталей?
  • 0
    попробуй это, я отредактировал
Показать ещё 5 комментариев
0

в вашем php-коде сначала вы должны дезертилизовать ур-код.. поместите эти строки наверху..

$searcharray = array();
parse_str($_POST[parameters], $searcharray);


$email = $mysqli->real_escape_string(strtolower(trim($searcharray['lemail'])));
$password = $mysqli->real_escape_string(trim($searcharray['lpassword']));
  • 0
    Я скопировал ваш код и заменил текущий, но все еще не работает ...
  • 0
    на самом деле тот же скрипт работает в моей форме отлично, я понятия не имею, почему он не работает в форме входа.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню