如何删除mysql“where”查询中的非字母数字字符?

4sup72z8  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(396)

电子商务网站正受到骗子的攻击,我们看到的一种模式是,他避免创建重复帐户,通过在电子邮件中添加点来抓住他。
例如。 "my.em.ail@gmail.com", "m.ye.mail@gmail.com", "mye.ma.il@gmail.com" 我知道这只会给他或其他人制造更多的电子邮件带来不便,但这并不是不把它们都抓到的理由。
我们的欺诈预防系统寻找高速重复订单,例如:

$email = 'myemail@gmail.com';

"SELECT * FROM `orders` WHERE `date` > '".date('Y-m-d H:i:s', time() - 60*60*24)."' AND `email` = '".$email."'"

如何更新where子句以将上述示例包含在此查询中?

j13ufse2

j13ufse21#

在您给出的示例中,可以删除 . s然后查找具有相同电子邮件的任何行(不再计算句点)。
例如:

$email = 'myemail@gmail.com';

SELECT * FROM `orders` WHERE `date` > "date('Y-m-d H:i:s', time() - 60*60*24)" 
AND REPLACE(`email`, ".", "")` = REPLACE("$email", ".", "")
)

如果需要更复杂的东西,就必须创建一个函数来度量字符串的“相似性”,以便对它们进行比较。请参阅此处了解更多详细信息:如何查找相似结果并按相似性排序?

相关问题