我想开始我的问题说,我意识到PDO/mysqli是新标准,并且已被广泛涵盖在SO上.但是在这种特殊情况下,我没有时间在启动客户端站点之前将所有查询转换为PDO.
以下内容已在网站上的大多数查询中使用(不是我可以添加)
$userEmail = filter_var($_POST['fEmail'], FILTER_SANITIZE_EMAIL);
$userEmail = mysql_real_escape_string($userEmail);
$sql ="SELECT email FROM members WHERE email = '$userEmail'";
:
:
Run Code Online (Sandbox Code Playgroud)
我想知道:
在上面的例子中使用filter_var和mysql_real_escape_string一起是好/可以练习吗?我主要担心的是,这两个函数可以一起使用还是在执行/上传到DB时会产生某种冲突/错误?
使用两者有什么好处?
提前致谢
dec*_*eze 16
消毒字符串可以使其符合某些期望.FILTER_SANITIZE_EMAIL从字符串中删除任何在电子邮件中无效的字符.结果(据推测)保证符合电子邮件地址语法.随机删除字符串中的字符有多大帮助我将留给您.(提示:我认为它根本不是很有用;你应该拒绝无效地址而不是将它们转换成随机结果.我给你一个无效的电子邮件地址,你把它锤成一个类似电子邮件地址的形状,现在怎么样你知道你能给我发电子邮件吗??!)
mysql_real_escape_string是通过转义所有符合逃逸的字符来确保任意字符串不违反SQL的字符串文字语法.假设你正确使用它(mysql有很多陷阱,这就是为什么它被弃用了......),你的输入没有任何东西可以让它失败.你给它任意字符串,它返回转义版本,句点.
因此,总的来说,是的,你正在做的事情很好.如果mysql_real_escape_string是在将字符串插入到SQL字符串文字之前对字符串做的最后一件事,那就没问题了.