Задать вопрос
@redesupar

Как проверить отправленные данные ajax?

Делаю ajax авторизацию только по логину(почта юзера) и не могу сделать проверку и вывод логирования

скрипт auth.php
<?
// массив для хранения ошибок
$errorContainer = array();
// полученные данные
$arrayFields = array(
    'login' => $_POST['login'],

);
 
// проверка всех полей на пустоту
foreach($arrayFields as $fieldName => $oneField){
    if($oneField == '' || !isset($oneField)){
        $errorContainer[$fieldName] = 'Поле обязательно для заполнения';
    }
}
     $users = require __DIR__ . '/usersDB.php';

    foreach ($users as $user) {
  if($user['login'] != $arrayFields['login'])
    $errorContainer['login'] = 'Данные не совпадают';
     }
   // делаем ответ для клиента
if(empty($errorContainer)){
    // если нет ошибок сообщаем об успехе
    echo json_encode(array('result' => 'success'));
}else{
    // если есть ошибки то отправляем
    echo json_encode(array('result' => 'error', 'text_error' => $errorContainer));
}

форма
<form action="auth.php" id="form_test" method="post">
            <input id="login"type="email" placeholder="Email">
            <button type="submit">Войти</button>
        </form>

скрипт
jQuery(document).ready(function($){
    $('#form_test').submit(function(){
        // убираем класс ошибок с инпутов
        $('input').each(function(){
            $(this).removeClass('error_input');
        });
        // прячем текст ошибок
        $('.error').hide();
         
        // получение данных из полей
        var login = $('#login').val();
       
        $.ajax({
            // метод отправки 
            type: "POST",
            // путь до скрипта-обработчика
            url: "/auth.php",
            // какие данные будут переданы
            data: {
                'login': login, 
                        },
            // тип передачи данных
            dataType: "json",
            // действие, при ответе с сервера
            success: function(data){
                // в случае, когда пришло success. Отработало без ошибок
                if(data.result == 'success'){   
                   console.log('форма корректно заполнена');
                    alert('форма корректно заполнена');
                // в случае ошибок в форме
                }else{
                    // перебираем массив с ошибками
                    for(var errorField in data.text_error){
                        // выводим текст ошибок 
                        $('#'+errorField+'_error').html(data.text_error[errorField]);
                        // показываем текст ошибок
                        $('#'+errorField+'_error').show();
                        // обводим инпуты красным цветом
                        $('#'+errorField).addClass('error_input');                      
                    }
                }
            }
        });
        // останавливаем сабмит, чтоб не перезагружалась страница
        return false;
    });
});


ну и примерный массив откуда я беру данные

<?php

return [
    ['login' => 'user1@yandex.ru'],
    ['login' => 'user2@yandex.ru'],
    ['login' => 'user3@yandex.ru'],
];

до логирования не дошел, споткнулся об проверку, подскажите как правильно сделать пожалуйста?
  • Вопрос задан
  • 90 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@redesupar Автор вопроса
Подсказали как сделать
$userFound = false;
foreach ($users as $user) {
  // нужный пользователь найден, 
  // дальнейший обход массива не нужен
  if ($user['login'] == $arrayFields['login']) {
    $userFound = true;
    break;
  }
}

// Обошли весь массив, но пользователь не найден
if (!$userFound) {
  $errorContainer['login'] = 'Данные не совпадают';
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 дек. 2024, в 07:53
20000 руб./за проект
25 дек. 2024, в 07:45
20000 руб./за проект