我正在创建联系表单,我有输入字段,输入电子邮件。 将来,我计划将这封电子邮件和所有其他数据保存到数据库中。 因此,我有一个关于如何在PHP中正确验证该电子邮件的问题?
- 必须接受utf-8以及电子邮件可以拥有的所有国际个人字符。
目前,我已经进行了两次不同的电子邮件验证。
第一个是使用filter_var()创建的,但是这个不允许使用国际字符。 (因此我删除了它。)
其次,我使用了自定义正则表达式'/^ [^\s@]+@[^\s@]+。[^\s@]+$/ui',这个允许使用国际字符但是它还允许'/ *和其他对可能的SQL注入构成威胁的角色。
我也知道,有一个选项可以向用户发送电子邮件以验证该电子邮件,但我想知道,是否有任何验证方法可用于验证国际电子邮件并阻止SQL注入?
可能加密/解密电子邮件? 也许PDO应该足够了?
答案 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");?>
答案 2 :(得分:0)
万一有人在寻找这个问题的答案,现在作为开发人员工作了两年之后,我会同意Alex Howansky的评论:
通过确保您具有有效的电子邮件地址来防止SQL注入不会发生,而是通过使用带有绑定参数的预备语句来实现。