首页 / PHP / 使用php清理搜索查询
使用php清理搜索查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用php清理搜索查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1436字,纯文字阅读大概需要3分钟。
内容图文
![使用php清理搜索查询](/upload/InfoBanner/zyjiaocheng/742/9825b8fc20344d9d9f9fab42917c6d5c.jpg)
当用户在我的网站上搜索时,我会获取get请求并对其进行mysql查询.我的原始代码看起来像这样:$q = $_GET [‘q’];.
现在urldecode正在为我添加斜杠,但我决定尝试使用santize字符串过滤器过滤器.
当我使用$q = urldecode($_ GET [‘q’]);时,这是我的sql:
SELECT * FROM item WHERE title LIKE '%you\'re%' OR description LIKE '%you\'re%' ORDER BY date DESC
当我使用时,这是我的sql:q = filter_var(urldecode($_ GET [‘q’]),FILTER_SANITIZE_STRING);
SELECT * FROM item WHERE title LIKE '%you\'re%' OR description LIKE '%you\'re%' ORDER BY date DESC
sql是完全一样的,但我得到不同的结果,我不知道为什么?只是使用urldecode从数据库返回正确的结果,但filter_var什么都不返回(即使sql是相同的).
我想我的问题是,清理和搜索查询字符串的最佳方法是什么?
解决方法:
Urldecode是使用错误的函数 – PHP将自动解码$_GET中的任何变量,因此您不需要和PHP Manual says doing so is dangerous一样.
人们经常谈论消毒输入,但我更愿意考虑消毒输出.
例如,清理输入将是:
$q = urldecode($_GET['q']);
$sql = "SELECT * FROM item WHERE title LIKE '%{$q}%'"
// later
echo "These items match '$q'";
消毒产量:
$sql = "SELECT * FROM item WHERE title LIKE '%".mysql_real_escape_string($_GET['q'])."%'"
// later
echo "These items match '".htmlspecialchars($_GET['q']).'";
请注意,在后一个示例中,我使用了不同的函数 – 一个用于将数据转换为mysql安全格式,另一个用于将数据转换为HTML安全格式.在知道对数据执行的操作之前,您无法知道要运行哪个函数.
其他人提到了参数化查询.是的,这些都是尽可能安全,避免意外错误,但不容易在一夜之间切换.
内容总结
以上是互联网集市为您收集整理的使用php清理搜索查询全部内容,希望文章能够帮你解决使用php清理搜索查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。