所有分类
  • 所有分类
  • 站长推荐
  • WP主题
  • WP插件
  • WP教程
  • WP模板库
  • 前端模板
  • PHP源码
  • 延伸阅读

esc_sql() vs sanitize_text_field() 区别说明

esc_sql() 函数

用途:专门用于转义 SQL 查询中的字符串,防止 SQL 注入

功能

  • 转义 SQL 特殊字符(单引号、反斜杠等)
  • 只转义,不清理其他内容
  • 保留原始字符串内容

适用场景

  • 直接拼接 SQL 查询时(不推荐,应该用 $wpdb->prepare())
  • 需要保留原始数据格式时

示例

$domain = esc_sql( $_POST['domain'] );
// 如果输入是: test'domain
// 输出: test\'domain

缺点

  • 如果忘记使用 $wpdb->prepare(),仍然有 SQL 注入风险
  • WordPress 官方不推荐单独使用,应该配合 $wpdb->prepare()

sanitize_text_field() 函数

用途:清理和验证文本字段输入

功能

  • 去除 HTML 标签
  • 去除换行符、制表符
  • 去除首尾空格
  • 转义特殊字符
  • 限制长度(默认 200 字符)

适用场景

  • 表单输入清理
  • 用户提交的文本数据
  • 存储到数据库前的一般清理

示例

$domain = sanitize_text_field( $_POST['domain'] );
// 如果输入是: <script>test</script>domain
// 输出: testdomain

优点

  • 更全面的清理
  • 防止 XSS 攻击
  • 适合表单输入

最佳实践

推荐方式(使用 $wpdb->prepare())

// ✅ 最佳实践
$domain = sanitize_text_field( $_POST['domain'] );
$wpdb->query( $wpdb->prepare( "SELECT * FROM table WHERE domain = %s", $domain ) );

不推荐方式(直接拼接)

// ❌ 不推荐,即使使用了 esc_sql()
$domain = esc_sql( $_POST['domain'] );
$wpdb->query( "SELECT * FROM table WHERE domain = '$domain'" );

总结

特性esc_sql()sanitize_text_field()
主要用途SQL 转义文本字段清理
防止 SQL 注入部分(需配合 prepare)部分(需配合 prepare)
防止 XSS
清理 HTML
推荐使用场景很少(已弃用)表单输入清理
WordPress 推荐不推荐单独使用推荐用于表单输入

结论

对于表单输入

  • 使用 sanitize_text_field() 清理输入
  • 然后使用 $wpdb->prepare() 进行 SQL 查询

对于 SQL 查询

  • 永远使用 $wpdb->prepare(),不要依赖 esc_sql()

1元=10金币|其他付款方式付款后未到账 新版下载框正在测试中,如遇购买或下载问题请反馈!
声明:1、本站大部分资源均为网络采集所得,仅供用来学习研究,请于下载后的24h内自行删除,正式商用请购买正版。2、所有汉化类文件和个别标注了“原创”的产品均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。3、如若本站内容侵犯了原著者的合法权益,请携带相关版权文件联系我们进行下架或删除。4、虚拟下载类资源具有可复制性,一经下载后本站有权拒绝退款或更换其他商品!
0
分享海报

评论0 注意:评论区不审核也不处理售后问题!如有售后问题请前往用户中心提交工单以详细说明!

请先
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录