php - 如何限制 PHP 搜索表单中的查询至少需要五个正确字符

标签 php html mysql arrays database

我正在创建一个搜索表单,客户可以在其中输入车辆的车辆识别码,并且将显示该行中的其他相关列。通过在我的 select 语句中使用“where like”运算符,我已经在某种程度上实现了此过程,但是,我希望客户在返回任何行之前必须输入至少五个正确的数字。

在我的代码的当前状态下,只需输入一个数字就会返回包含该数字的所有行。此外,不输入任何内容并进行搜索将显示所有行。

这是我的选择语句当前的样子:

$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 语句来限制客户端在显示结果之前必须正确输入的字符数?

最佳答案

有两种解决方案:客户端验证和服务器端验证:

两者都需要在当天结束之前实现,否则您将无法强制执行适当的验证。而且您不能仅仅依赖客户端验证。

  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
  • 提交表单后,您需要检查以下验证。

    Note: I am not demonstrating anything against a security vulnerability

    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 */
    }
    

    关于php - 如何限制 PHP 搜索表单中的查询至少需要五个正确字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52544674/

    相关文章:

    php - 使用url检索图片出错

    javascript - AngularJs - 日期时间选择器打开一次

    MySql 从 STR_TO_DATE date_format 转换日期

    mysql - 两个表上的内连接

    mysql - req.body 在 post Express Nodejs 上未定义

    php - 使用 PHP/MySQLi 进行多次更新和插入

    php - Freebsd 中用于循环 postfx 生成的邮件日志的默认工具是什么?

    php - 如何在 Dreamweaver 中为被读取为 css 文件的 php 文件获取 css 突出显示和提示?

    javascript - setTimeout 问题

    javascript - CSS 菜单停止工作 -/function/is undefined 错误