2

我试图让我的 cfscript 标记中的这段代码工作。我已经搜索和搜索,但没有任何东西可以验证电子邮件地址。

如果电子邮件地址为空,它将返回错误消息,但如果我只是输入字符,它将让它通过。

我对 CF 中的脚本编写非常陌生,因此将不胜感激。

if (isDefined("form.email"))
            {
                if (form.email is "")
                    {
                        errormessageemail = "Please enter a valid Email Address!";
                    }
                else if (not form.email is "")
                    {
                        email = form.email;
                        function validate_email(str,email) {
                        if( not len(trim(arguments.str)) or not refind("^[0-9A-Za-z.'+_-]+@([0-9A-Za-z-]+\.)+[A-Za-z]+$", trim(arguments.str)) ) {
                            errormessageemail = "Please enter a valid Email Address! Ex. abc@abc.com";
                            }
                        return errormessageemail;
                        }
                    }
            }
4

3 回答 3

8

它可以像这样简单:

if (StructKeyExists(form, "email") AND NOT isValid("email", form.email)) {
    errormessageemail = "Please enter a valid Email Address!";
}

您不验证是否未发布电子邮件。空字符串不是有效的邮箱,不需要特别检查。

注意:有人可能会争辩说 isValid/email 不能 100% 正常工作。这是真的,但很少见的问题。如果您也这么认为,请使用正则表达式。

于 2012-08-22T20:15:53.287 回答
1

这是我用于检查电子邮件有效性的代码:

LOCAL.Email = trim(lCase(ARGUMENTS.Email));
LOCAL.IsValid = reFindNoCase("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$", LOCAL.Email);

您应该使用 structKeyExists 来测试您的表单,而不是像其他受访者建议的那样使用 isDefined。structKeyExists 函数搜索变量的特定范围。isDefined 搜索任何范围。

if (StructKeyExists(form, "email") AND NOT isValid("email", form.email)) {
    errormessageemail = "Please enter a valid Email Address!";
}
于 2012-08-22T20:36:46.200 回答
0

只需在 CFM 中检查电子邮件有效性

 <cfif  isValid("email", #Form.email#) >
    <cfoutput>Email Address is valid</cfoutput>
<cfelse>
   <cfoutput>Email Address is invalid</cfoutput>
</cfelse>
于 2019-03-12T09:08:42.983 回答