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

How to validate email (internationally) for secure saving in database

我正在创建联系表单,那里有输入字段,输入电子邮件。 将来,我打算将这封电子邮件和所有其他数据保存到数据库中。 因此,我有一个关于如何在 PHP?

中正确验证该电子邮件的问题

-它必须接受 utf-8 和电子邮件可以包含的所有国际单个字符。

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

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

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

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

也许 encrypting/decrypting 电子邮件? 也许 PDO 应该足够了?

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

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

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

根据 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

如果有人正在寻找这个问题的答案,现在作为开发人员工作两年后,我同意 Alex Howansky 的评论:

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