WordPress的WPDB和MySQL的奇怪行为
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了WordPress的WPDB和MySQL的奇怪行为,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1623字,纯文字阅读大概需要3分钟。
内容图文
![WordPress的WPDB和MySQL的奇怪行为](/upload/InfoBanner/zyjiaocheng/882/66abd3fca9074432a702f91a36b6d6cc.jpg)
我正在使用$wpdb,以下是调用$wpdb-> update的代码的一部分.
如果使用普通的email@domain.com,但如果用户要使用其用户名登录,则此代码效果很好.电子邮件something @ domain.com,wpdb不会读取该标志
下面的变量来自$_GET,但我在输入值以提高可读性.
$open_email = 'something+ADDITION@gmail.com';
$open_key = '2f1e4b16a9a882bbef9b00906fc5c8f563fd70a5';
$open_time = time();
if (strlen($open_key) == 40) {
$status_update = $wpdb->update('status',
array(
'invite_status' => 'opened',
'open_time' => $open_time
),
array(
'invite_email' => $open_email,
'invite_token' => $open_key
),
array(
'%s',
'%d'
),
array(
'%s',
'%s'
)
);
}
$wpdb-> last_query和$wpdb-> last_error的var dump返回以下内容.
字符串(235)“更新状态设置vital_status =’已打开’,open_time = 1461103507,其中invit_email =’东西ADDITION@gmail.com’且rating_invite_token =’2f1e4b16a9a882bbef9b00906fc5c8f563fd70a5’”
我注意到上面的错误部分以粗体突出显示,我的加号()消失了,并且留了一个空格,导致上述语句不更新.
我可以知道我错过了什么吗?
更新:我之所以问是因为gmails的某些用户的确使用该符号对电子邮件进行了分类,因为用户名“ anything@gmail.com”仍然返回到“ username@gmail.com”
如果我应该进行任何卫生处理,但我错过了,请也指导我.我认为所有$_GET数据都应该被清除.
解决方法:
不是wpdb或MySQL删除了加号.
在幕后,当您这样调用update时,WordPress会通过mysqli_real_escape_string()传递数据,而没有其他任何传递.
既然您提到数据是来自查询字符串$_GET的,那么很可能在查询之前将其删除了,因为我们已经对其进行了转义并且将其转换为空格.
您可以使用以下方法进行检查:
$open_email = $_GET['email'];
var_dump($open_email);
看看结果如何.
为了获得加分,经过所有清理和转义后,应该安全地执行以下操作:
$open_email = str_replace(' ', '+', $open_email);
内容总结
以上是互联网集市为您收集整理的WordPress的WPDB和MySQL的奇怪行为全部内容,希望文章能够帮你解决WordPress的WPDB和MySQL的奇怪行为所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。