如何验证电子邮件(国际)以确保在数据库中安全保存

时间:2017-05-09 18:22:34

标签: php email-validation

我正在创建联系表单,我有输入字段,输入电子邮件。 将来,我计划将这封电子邮件和所有其他数据保存到数据库中。 因此,我有一个关于如何在PHP中正确验证该电子邮件的问题?

- 必须接受utf-8以及电子邮件可以拥有的所有国际个人字符。

目前,我已经进行了两次不同的电子邮件验证。

第一个是使用filter_var()创建的,但是这个不允许使用国际字符。 (因此我删除了它。)

其次,我使用了自定义正则表达式'/^ [^\s@]+@[^\s@]+。[^\s@]+$/ui',这个允许使用国际字符但是它还允许'/ *和其他对可能的SQL注入构成威胁的角色。

我也知道,有一个选项可以向用户发送电子邮件以验证该电子邮件,但我想知道,是否有任何验证方法可用于验证国际电子邮件并阻止SQL注入?

可能加密/解密电子邮件? 也许PDO应该足够了?

3 个答案:

答案 0 :(得分:0)

正则表达式验证非标准电子邮件地址:

^([\p{L}\.\-\d]+)@([\p{L}\-\.\d]+)((\.(\p{L})      {2,63})+)$

原始来源How to validate non-english (UTF-8) encoded email address in Javascript and PHP?

答案 1 :(得分:0)

根据brasofilo的建议,因为我没有任何代码可以与您的项目合作:

<?php
 iconv_set_encoding("internal_encoding", "UTF-8");

$subject = "Testmail — Special Characters";
$msg = "Hi there,\n\nthis isn’t something easy.\n\nI haven’t thought that it’s that complicated!";

mail(utf8_decode($to), utf8_decode($subject), utf8_decode($msg), utf8_decode($from)."\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n");?>

php mail special characters utf8

答案 2 :(得分:0)

万一有人在寻找这个问题的答案,现在作为开发人员工作了两年之后,我会同意Alex Howansky的评论:

通过确保您具有有效的电子邮件地址来防止SQL注入不会发生,而是通过使用带有绑定参数的预备语句来实现。