Email Validation Function: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 46: Line 46:
  FunctionEnd
  FunctionEnd
</highlight-nsis>
</highlight-nsis>
[[Category:Internet Functions]]

Revision as of 18:56, 13 March 2007

CheckUserEmailAddress

This function is useful for checking the format of an email address. Then returning an error if it doesn't meet minimum requirements.

 VAR $USEREMAILADDRESS
 Function CheckUserEmailAddress
    StrCpy $R1 $USEREMAILADDRESS
    StrCpy $R2 ""
    StrCpy $R3 ""
    #count the number of @'s more than one is invalid, less than one is invalid
    ${WordFind} "$USEREMAILADDRESS" "@" "*" $R1
    StrCmp "1" "$R1" lbl_check2 lbl_error
 lbl_check2:
    #count the number of words delimited by @ it should be 2.
    ${WordFind} "$USEREMAILADDRESS" "@" "#" $R1
    StrCmp "2" "$R1" lbl_check3 lbl_error
 lbl_check3:
    #Split the words into user and domain
    ${WordFind} "$USEREMAILADDRESS" "@" "0" $R2
    ${WordFind} "$USEREMAILADDRESS" "@" "1" $R3
    #Determine if either of the fields contain special RFC822 characters
    ${StrFilter} "$R2" "" "" '()<>,;:\"[]' $R1
    StrCmp "$R2" "$R1" 0 lbl_error
    ${StrFilter} "$R3" "" "" '()<>,;:\"[]' $R1
    StrCmp "$R3" "$R1" 0 lbl_error
 lbl_check4:
    #Determine the number of fields in user and domain, check to see 
    #the number of delimiter is one less than the number of words.
    ${WordFind} "$R2" "." "*" $R5
    ${WordFind} "$R2" "." "#" $R6
    IntOp $R5 $R5 + 1
    StrCmp "$R5" "$R6" 0 lbl_error
    ${WordFind} "$R3" "." "*" $R5
    ${WordFind} "$R3" "." "#" $R6
    IntOp $R5 $R5 + 1
    StrCmp "$R5" "$R6" lbl_check5 lbl_error
 lbl_check5:
    # make sure there is at least one "." in the domain section.
    ${WordFind} "$R3" "." "*" $R1
    IntCmp 1 $R1 lbl_end lbl_end lbl_error
    goto lbl_end
 lbl_error:
    SetErrors
 lbl_end:
 FunctionEnd