gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:02:57 25 4
gpt4 key购买 nike

我正在创建一个搜索表单,客户可以在其中输入车辆的车辆识别码,并且将显示该行中的其他相关列。通过在我的 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com