问题描述
|
我正在构建一个自动完成的插件,我需要检查所有以特定词开头的单词,例如,按如下所示设置
$one
会检测到“列表”,“监听器”,“监听”等:
$one= \"list%\";
如何在第二个示例中附加通配符(%
)以达到相同的结果?
$one= $_REQUEST[\'term\']; // lacks %
解决方法
在分析了您的谜语之后,我想这就是您想要的:
$one = $_REQUEST[\"term\"] . \"%\";
这会将%
sql占位符附加到该搜索词。 (这就是我在这里推测的。)
,这是创建自动完成表格的一种非常有趣的方法。为了避免这成为安全噩梦,请考虑以下几点:
SQL注入:
保护您的网站免遭此类攻击的最佳方法是使用PDO和准备好的查询。
如何使用PDO
在PHP中停止SQL注入的最佳方法
表格验证和卫生:
来自$ _GET或$ _POST的数据应始终谨慎处理。您正在将变量直接从$ _GET传递到数据库。这是非常不安全的。想象一下,如果没有一个名字,您会得到\'Mike;{InsertEvilCode}\'
。
用PHP清理用户输入的最佳方法是什么?
使用_GET数据是否需要某种卫生措施?
POST的验证?
使用通配符搜索(%):
通常,“通配符”搜索非常慢,因此您希望将通配符符号的数量保持在较低水平。
SQL通配符
SQL通配符:性能开销?