一些小PHP问题

时间:2014-01-13 20:22:25

标签: php

我的脚本上有很多评论家,我正在使用我的注册表:

(empty($_POST['email'])) 

有些人说这不好,有更好的选择吗?

我也在使用preg_march进行电子邮件验证:

if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $_POST['email'])) { 

有一个人说我需要使用Filter_validate并且有一个人告诉我使用strlen任何答案?

最后:我正在使用以下方式发送激活电子邮件:

mail($Email, 'Activeer je account!', $message, 'Van: NoReply@RubyCMS.com');

这有什么问题吗?人们一直说我需要使用phpmailer类,但我甚至不知道那是什么......

由于

3 个答案:

答案 0 :(得分:2)

filter_var()与您所能获得的一样好,如果不发送电子邮件到该地址并附上确认链接。您可以执行DNS和MX记录检查等操作,但它们会增加很多开销,也会给您带来误报。

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
    // bad email
}

答案 1 :(得分:1)

我会说你应该使用它可以给你的所有可能的语言好处。

if(filter_var($email, FILTER_VALIDATE_EMAIL)){

很好。

当您使用preg_match时,您应该知道regexp好。如果你不擅长,那么总是可能会失败。

关于mail,这取决于您应该发送多少封电子邮件。如果每小时发一封电子邮件,那不是问题。如果循环中有很多字母 - 更好地找到其他解决方案。

答案 2 :(得分:0)

  1. 使用if( isset($_POST['field']) && !empty($_POST['field']) )来避免讨厌的“未定义索引”问题/消息。
  2. 完全符合RFC标准的电子邮件验证的'一个正则规则来统治它们'是几十行,你的不是。因此,您的正则表达式不完全符合RFC。 FILTER_VALIDATE_EMAIL 完全符合RFC
  3. 无论谁告诉您使用strlen()验证电子邮件地址,都需要撤销其互联网权限。