Sorry there was a mistake in the previous posting! whoops! ive got coding
eyes syndrome. You know, where you cant see the apostrophe for all the
punctuation marks! the final if clause is set to false false, not to true
false as it should be.

anyhow heres the working script


<cfscript>
 /**
* If anyone needs it use it
* @param number          card number to check. (Required)
* @param cardtype        card type to check. (Required)
* There is only visa and mastercard below, i dont have the details for any
others but if i find any i will add them
* @return Returns a boolean.
* @author Scott Glassbrook ([EMAIL PROTECTED])
* @added to by Jamie Lawrence jenner ([EMAIL PROTECTED]) 

*/  
function IsMod10(number,cardtype) {
        var valid = true;
        var card = cardtype;
        var card_number = ReReplaceNoCase(number,  "[^0-9]",  "",  "All");
        var rebmun_drac = Reverse(card_number);
        var length = len(rebmun_drac);
        var even_list = "";
        var even_numbers = "0";
        var odd_numbers = "0";
        var loop1 = "1";
        var loop2 = "1";
        
        /** First, pass card type to switch*/
        switch(card){
                /** if visa, check 16 chars in length and that it starts with a 4*/
                case 'visa':
                        if (NOT refindnocase("^[4]{1}[0-9]{15}$",card_number)){
                                valid = false;
                                }
                                else 
                                {
                                valid = true;
                                }
                break;
                /** if mastercard, check 16 chars in length and that it starts with 51 
-
55*/
                case 'mcard':
                        if (NOT refindnocase("^[51-55]{2}[0-9]{14}$",card_number)){
                                valid = false;
                                }
                                else 
                                {
                                valid = true;
                                }
                break;
                
                default:
                        valid = false;
                                }

                
                /*if valid is true then number fits reg expression
                carry out luhn mod 10 algogarithm*/
                
                if (valid eq true)
                {
                        while (loop1 LTE length)
                        {
                                If ((loop1 mod 2) eq "0")
                                        even_list = even_list & (mid(rebmun_drac, 
loop1, 1) * 2);
                                Else
                                        odd_numbers  = (odd_numbers + mid(rebmun_drac, 
loop1, 1));
                                 loop1 = loop1 + 1;
                        }
                
                        while (loop2 LTE len(even_list))
                        {
                                even_numbers = (even_numbers + mid(even_list, loop2, 
1));
                                loop2 = loop2 + 1;
                        }
                        
                        If ((even_numbers + odd_numbers) mod 10 eq "0")
                                isvalid = true;
                        Else
                                isvalid = false;
                
                }
                else
                {
                isvalid = false;
                }
                
                return isvalid;
}
</cfscript>






> Ola,
> 
> I dont tlike cfinput form etc, doesnt give the flexibility. Anyhow i have
> finished the script for a complete credit card check, so if anyone needs
> it in future, here it is. cheers for all the input. first time using these
> forums and they are proving to be really helpful :-)
> 
> 
> <cfscript>
>  /**
> * If anyone needs it use it
> * @param number        card number to check. (Required)
> * @param cardtype      card type to check. (Required)
> * There is only visa and mastercard below, i dont have the details for any
> others but if i find any i will add them
> * @return Returns a boolean.
> * @author Scott Glassbrook ([EMAIL PROTECTED])
> * @added to by Jamie Lawrence jenner ([EMAIL PROTECTED]) 
> 
> */  
> function IsMod10(number,cardtype) {
>       var valid = true;
>       var card = cardtype;
>       var card_number = ReReplaceNoCase(number,  "[^0-9]",  "",  "All");
>       var rebmun_drac = Reverse(card_number);
>       var length = len(rebmun_drac);
>       var even_list = "";
>       var even_numbers = "0";
>       var odd_numbers = "0";
>       var loop1 = "1";
>       var loop2 = "1";
>       
>       /** First, pass card type to switch*/
>       switch(card){
>               /** if visa, check 16 chars in length and that it starts with a 4*/
>               case 'visa':
>                       if (NOT refindnocase("^[4]{1}[0-9]{15}$",card_number)){
>                               valid = false;
>                               }
>                               else 
>                               {
>                               valid = true;
>                               }
>               break;
>               /** if mastercard, check 16 chars in length and that it starts with 51 
> -
> 55*/
>               case 'mcard':
>                       if (NOT refindnocase("^[51-55]{2}[0-9]{14}$",card_number)){
>                               valid = false;
>                               }
>                               else 
>                               {
>                               valid = true;
>                               }
>               break;
>               
>               default:
>                       valid = false;
>                               }
> 
>               
>               /*if valid is true then number fits reg expression
>               carry out luhn mod 10 algogarithm*/
>               
>               if (valid eq true)
>               {
>                       while (loop1 LTE length)
>                       {
>                               If ((loop1 mod 2) eq "0")
>                                       even_list = even_list & (mid(rebmun_drac, 
> loop1, 1) * 2);
>                               Else
>                                       odd_numbers  = (odd_numbers + mid(rebmun_drac, 
> loop1, 1));
>                                loop1 = loop1 + 1;
>                       }
>               
>                       while (loop2 LTE len(even_list))
>                       {
>                               even_numbers = (even_numbers + mid(even_list, loop2, 
> 1));
>                               loop2 = loop2 + 1;
>                       }
>                       
>                       If ((even_numbers + odd_numbers) mod 10 eq "0")
>                               isvalid = false;
>                       Else
>                               isvalid = false;
>               
>               }
>               else
>               {
>               isvalid = false;
>               }
>               
>               return isvalid;
> }
> </cfscript>

---
You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
To unsubscribe send a blank email to [EMAIL PROTECTED]

MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
http://www.mxdu.com/ + 24-25 February, 2004

Reply via email to