html—如何限制查询在php搜索表单中至少需要五个正确字符

z18hc3ub  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(480)

我正在创建一个搜索表单,在该表单中,客户将能够向车辆输入他们的vin编号,并且该行中的其他相关列将显示出来。通过在select语句中使用where-like运算符,我在某种程度上实现了这个过程,但是,我希望客户机在返回任何行之前必须至少输入五个正确的数字。
在我的代码的当前状态下,只需输入一个数字就可以返回包含该数字的所有行。此外,不输入任何内容并进行搜索将显示所有行。
下面是我的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语句显示结果之前必须正确输入的字符数?

9jyewag0

9jyewag01#

有两种解决方案客户端验证和服务器端验证:
这两个都需要在一天结束前实现,否则您就无法执行正确的验证。你不能仅仅依靠客户端验证。
客户端处理
最好先进行客户端验证。否则,您会用不必要的调用来攻击服务器,这反过来会影响您的优化和性能,如果不是立即的话。
如果您在搜索栏中键入时使用jquery than on 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 */
    });
});

在服务器端实现ie-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 */
}
qlvxas9a

qlvxas9a2#

谢谢大家的帮助。我可以通过修改我的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>

“required minlength”和“required maxlength”函数能够解决我的问题,并限制客户端在数据返回到服务器之前用户必须输入多少个字符。

相关问题