Как ограничить запрос, чтобы в поисковой форме PHP требовалось как минимум пять правильных символов - PullRequest
0 голосов
/ 27 сентября 2018

Я работаю над созданием формы поиска, где клиенты смогут вводить свой номер Vin для транспортного средства, и будут отображаться другие связанные столбцы в этой строке.Я получил этот процесс, работающий до некоторой степени, используя оператор «где как» в моем операторе select, однако я хочу, чтобы клиенты вводили как минимум пять правильных цифр, прежде чем будут возвращены какие-либо строки.

В текущем состоянии моего кода простой ввод одной цифры вернет все строки с этой цифрой.Кроме того, ничего не вводя и поиск приведет к отображению всех строк.

Вот как выглядит мой оператор выбора в настоящее время:

$query = "SELECT Record, `EMAIL 2`, DATEi, DATEf, PROJECT, `SAMPLE DESCRIPTION`, `FLD5_(As/VIN)` FROM `tbl_2018a` WHERE CONCAT (`EMAIL 2`, `PROJECT`, `SAMPLE DESCRIPTION`, `FLD5_(As/VIN)`) LIKE '%".$valueToSearch."%'";

valueToSearch в данном случае - это переменная, контролируемая клиентом во время предварительного поиска.

Есть ли способ ограничить количество символов, которое клиент должен правильно ввести, прежде чем результаты будут отображаться через PHP или путем изменения оператора select?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Спасибо всем за помощь.Я смог найти решение, изменив свой HTML-код, чтобы ограничить количество минимальных символов, вводимых клиентом.

<form action="php_html_table_data_filter.php" method="post">
            <input type="text" name="valueToSearch" required minlength="5" maxlength="30" placeholder="Search"><br><br>
            <input type="submit" name="search" value="Find Project"><br><br>

Функции «требуемая минимальная длина» и «требуемая максимальная длина» смогли решить мою проблемуи ограничьте на стороне клиента, сколько символов пользователь должен ввести, прежде чем данные будут возвращены на сервер.

0 голосов
/ 28 сентября 2018

Существует 2 решения: проверка на стороне клиента и проверка на стороне сервера:

Оба должны быть реализованы до конца дня, иначе вы не сможете провести надлежащую проверку.И вы не можете просто полагаться на проверку на стороне клиента.

  1. Обработка на стороне клиента

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

Если вы используетеjQuery, чем на KEYUP, при вводе в строке поиска вы можете проверить, сколько символов вводится в поле поиска, длина больше или равна 5 символам, тогда только разрешено идти для запроса AJAX.

/ * Предполагая, что у вас может быть следующий вид HTML * /

<input type="text" name="filter" id="filter">
<span id="filter-error"></span> <!-- To show the filter error option, not a mandatory but useful to know the user whats causing the problem -->

Например, для реализации в jQuery

$('#filter').on('keyup', function(){
    //
    var searchData = $(this).val();
    if(searchData == undefined || searchData.length < 5){
        $('#filter-error').html("Please enter atleast 5 characters.");
        return false;
    }

    /* Else the normal jQuery call what you want to handle her for sending the ajax request */
    $.ajax({
        /* Implementation */
    });
});
Внедрение на стороне сервера, т.е. PHP

После отправки формы вам необходимо проверить следующую проверку.

Примечание: яне демонстрирует ничего против уязвимости безопасности

if($_SERVER['REQUEST_METHOD'] == 'POST'){ /* Check if its a post method and not get method */
    $filter = trim($_POST['filter']); /* making sure to trim the spaces just to make sure user doesnt post white spaces */
    (strlen($filter)) ? (return 'Please enter atlease 5 characters') : '';

    /* Even you can check for some more validations like whether its having only AlphaNumeric only or not or anything which you require */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...