2012-08-22 51 views
2

我試圖讓我的cfscript標記中的這一點代碼工作。我搜索和搜索,但有一些沒有用於驗證電子郵件地址。在Coldfusion的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.'+_-][email protected]([0-9A-Za-z-]+\.)+[A-Za-z]+$", trim(arguments.str))) { 
          errormessageemail = "Please enter a valid Email Address! Ex. [email protected]"; 
          } 
         return errormessageemail; 
         } 
        } 
      } 

回答

8

這可能是如此簡單:

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

如果郵件不貼你不驗證。空白字符串不是有效的電子郵件,不需要專門檢查。

注意:有人可能會認爲isValid /電子郵件無法正常工作。這是真的,但很少見的問題。使用正則表達式,如果你也這麼想。

+0

感謝上週的幫助。在這種情況下,我總是使用isDefined(「blah」)代碼。我已經使用上述方法重新編碼,並能夠鞏固邏輯。你每天學習新的東西。謝謝。 – lmtony

1

下面是我使用的檢查電子郵件的有效性代碼:

LOCAL.Email = trim(lCase(ARGUMENTS.Email)); 
LOCAL.IsValid = reFindNoCase("^[A-Z0-9._%+-][email protected][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函數爲變量搜索特定的作用域。是定義搜索任何和每個範圍。

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