jQWidgets Forums

jQuery UI Widgets Forums Plugins Validator, Drag & Drop, Sortable ajax validation problem Reply To: ajax validation problem

ajax validation problem #71672

brio
Participant

dear Peter,
it’s me again; still with this problem.
‘validationSuccess’ works only when I cut off ajax rule.
Php rule works fine, I think.
I would like to show you some code abstract.

$('#registrationForm').jqxValidator({
                    hintType: 'label',
                    rules: [
                        {input: '#nome', message: 'campo obbligatorio.', action: 'blur', rule: 'required'},
                        {input: '#nome', message: 'almeno 2 caratteri.', action: 'blur', rule: 'minLength=2'},
                        {input: '#cognome', message: 'campo obbligatorio.', action: 'blur', rule: 'required'},
                        {input: '#cognome', message: 'almeno 2 caratteri.', action: 'blur', rule: 'minLength=2'},
                        {input: '#codicefiscale', message: 'campo obbligatorio.', action: 'blur', rule: 'required'},
                        {input: '#codicefiscale', message: 'codice fiscale non valido.', action: 'blur', rule: function (input, commit) {
                                var cf = $('#codicefiscale').val(), validi, i, s, set1, set2, setpari, setdisp;
                                if (cf == '')
                                    return '';
                                cf = cf.toUpperCase();
                                if (cf.length != 16)
                                    return false;
                                validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
                                for (i = 0; i < 16; i++) {
                                    if (validi.indexOf(cf.charAt(i)) == -1)
                                        return false;
                                }
                                set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                                set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
                                setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                                setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
                                s = 0;
                                for (i = 1; i <= 13; i += 2)
                                    s += setpari.indexOf(set2.charAt(set1.indexOf(cf.charAt(i))));
                                for (i = 0; i <= 14; i += 2)
                                    s += setdisp.indexOf(set2.charAt(set1.indexOf(cf.charAt(i))));
                                if (s % 26 != cf.charCodeAt(15) - 'A'.charCodeAt(0))
                                    return false;
                                return true;
                            }
                        },
                        {input: '#comune', message: 'campo obbligatorio.', action: 'blur', rule: 'required'},
                        {input: '#comune', message: 'campo obbligatorio.', action: 'blur', rule: 'minLength=2'},
                        {input: '#indirizzo', message: 'campo obbligatorio.', action: 'blur', rule: 'required'},
                        {input: '#indirizzo', message: 'almeno 2 caratteri.', action: 'blur', rule: 'minLength=2'},
                        {input: '#telefonofisso123', message: 'numero telefonico non valido.', action: 'blur', rule: function (input, commit) {
                                var telefonofisso = $('#telefonofisso123').val();
                                if (telefonofisso.length >= 7) {
                                    switch (telefonofisso.substr(0, 2)) {
                                        case "00":
                                            if (telefonofisso.substr(0, 3) == "004") { //004 è il prefisso di Campione d'Italia
                                                return true;
                                            } else {
                                                return false;
                                            }
                                            break;
                                        default:
                                            if (telefonofisso.substr(0, 1) == "0") {
                                                return true;
                                            } else {
                                                return false;
                                            }
                                            break;
                                    }
                                } else if (telefonofisso.length == 0) {
                                    return true;
                                } else {
                                    return false;
                                }
                                ;
                            }
                        },
                        {input: '#telefonocellulare123', message: 'campo obbligatorio.', action: 'blur', rule: 'required'},
                        //{input: '#telefonocellulare123', message: 'numero telefonico non valido.', action: 'blur', rule: 'minLength=9'},
                        {input: '#telefonocellulare123', message: 'numero telefonico non valido.', action: 'blur', rule: function (input, commit) {
                                var telefonocellulare = $('#telefonocellulare123').jqxInput('val');
                                if (telefonocellulare.length == 10) {
                                    $.ajax({
                                        type: 'POST',
                                        url: "valida_telefono_cellulare.php",
                                        //dataType: 'html',
                                        data: {telefono_cellulare: telefonocellulare},
                                        success: function (data)
                                        {
                                            if (data == "true")
                                            {
                                                commit(true);
                                            }
                                            else commit(false);
                                        },
                                        error: function ()
                                        {
                                            commit(false);
                                        }
                                    });
                                } else if (telefonocellulare.length == 0) {
                                    return true;
                                } else {
                                    return false;
                                }
                            }
                        },
                        {input: '#email', message: 'campo obbligatorio.', action: 'blur', rule: 'required'},
                        {input: '#email', message: 'indirizzo email non valido.', action: 'blur', rule: function (input, commit) {
                                var email = $('#email').jqxInput('val');
                                $.ajax({
                                    type: 'POST',
                                    url: "valida_email.php",
                                    //dataType: 'html',
                                    data: {email: email},
                                    success: function (data)
                                    {
                                        if (data == "true")
                                        {
                                            commit(true);
                                        }
                                        else commit(false);
                                    },
                                    error: function ()
                                    {
                                        commit(false);
                                    }
                                });
                            }
                        },
                        {input: '#password', message: 'campo obbligatorio.', action: 'blur', rule: 'required'},
                        {input: '#password', message: 'la password dev\'essere compresa tra 6 e 12 caratteri.', action: 'blur', rule: 'length=6,12'},
                        {input: '#conferma_password', message: 'campo obbligatorio.', action: 'blur', rule: 'required'},
                        {input: '#conferma_password', message: 'non c\'è corrispondenza con la password.', action: 'blur', rule: function (input, commit) {
                                // call commit with false, when you are doing server validation and you want to display a validation error on this field. 
                                if (input.val() === $('#password').val()) {
                                    return true;
                                }
                                return false;
                            }}
                    ], theme: theme
                });

                $('#registrationForm').on('validationSuccess', function (event) {
alert();
//                    alert('You have filled the form correctly!')
//                    $.post("registrazione.php", $("#registrationForm").serialize(), function(result) {
//                        $("span").html(result);
//                    });
//                    $("span").html($("#registrationForm").serialize());
                    $.post("registrazione.php", {
                        nome: $('#nome').val(),
                        cognome: $('#cognome').val(),
                        codicefiscale: $('#codicefiscale').val(),
                        comune: $('#comune').val(),
                        indirizzo: $('#indirizzo').val(),
                        cap: $('#cap').val(),
                        telefonofisso: $('#telefonofisso123').val(),
                        telefonocellulare: $('#telefonocellulare123').val(),
                        email: $('#email').val(),
                        password: $('#password').val(),
                        ip: $('#ip').val()
                    }, function (result) {
                        $("#windowsMessage").html(result);
                        $('#eventWindow').jqxWindow('open');
                    });
                });
                $('#sendButton').jqxButton({width: 100, height: 25, theme: theme});
                $("#sendButton").click(function () {
                    $('#registrationForm').jqxValidator('validate');
                });
<?php

function disposablecheck($telefono_cellulare) {
    $whitelist = array(
        "313",
        "320",
        "322",
        "323",
        "324",
        "327",
        "328",
        "329",
        "330",
        "331",
        "334",
        "335",
        "336",
        "337",
        "338",
        "339",
        "340",
        "341",
        "342",
        "343",
        "345",
        "346",
        "347",
        "348",
        "349",
        "350",
        "351",
        "360",
        "361",
        "362",
        "363",
        "366",
        "368",
        "370",
        "373",
        "375",
        "377",
        "380",
        "383",
        "388",
        "389",
        "390",
        "391",
        "392",
        "393",
        "397"
    );

    $telefono_cellulare_prefisso = substr($telefono_cellulare, 0, 3);

    if (in_array($telefono_cellulare_prefisso, $whitelist)) {
        return 0;
    } else {
        return 1;
    }
}

$cellulare = $_POST["telefono_cellulare"];

//if (disposablecheck($_POST["telefono_cellulare"]) == 1) {
if (disposablecheck($cellulare) == 1) {
    //do stuff for disposable emails
    echo "false";
    return;
} else {
    //do stuff if not disposable email
    echo "true";
    return;
}
?>
<?php

function disposablecheck($email) {
    $blacklist = array(
        "0815.ru0clickemail.com",
        "0wnd.net",
        "0wnd.org",
        "10minutemail.com",
        "20minutemail.com",
        "2prong.com",
        "3d-painting.com",
        "4warding.com",
        "4warding.net",
        "4warding.org",
        "9ox.net",
        "a-bc.net",
        "amilegit.com",
        "anonbox.net",
        "anonymbox.com",
        "antichef.com",
        "antichef.net",
        "antispam.de",
        "baxomale.ht.cx",
        "beefmilk.com",
        "binkmail.com",
        "bio-muesli.net",
        "bobmail.info",
        "bodhi.lawlita.com",
        "bofthew.com",
        "brefmail.com",
        "bsnow.net",
        "bugmenot.com",
        "bumpymail.com",
        "casualdx.com",
        "chogmail.com",
        "cool.fr.nf",
        "correo.blogos.net",
        "cosmorph.com",
        "courriel.fr.nf",
        "courrieltemporaire.com",
        "curryworld.de",
        "cust.in",
        "dacoolest.com",
        "dandikmail.com",
        "deadaddress.com",
        "despam.it",
        "devnullmail.com",
        "dfgh.net",
        "digitalsanctuary.com",
        "discardmail.com",
        "discardmail.de",
        "disposableaddress.com",
        "disposemail.com",
        "dispostable.com",
        "dm.w3internet.co.uk example.com",
        "dodgeit.com",
        "dodgit.com",
        "dodgit.org",
        "dontreg.com",
        "dontsendmespam.de",
        "dump-email.info",
        "dumpyemail.com",
        "e4ward.com",
        "email60.com",
        "emailias.com",
        "emailinfive.com",
        "emailmiser.com",
        "emailtemporario.com.br",
        "emailwarden.com",
        "ephemail.net",
        "explodemail.com",
        "fakeinbox.com",
        "fakeinformation.com",
        "fastacura.com",
        "filzmail.com",
        "fizmail.com",
        "frapmail.com",
        "garliclife.com",
        "get1mail.com",
        "getonemail.com",
        "getonemail.net",
        "girlsundertheinfluence.com",
        "gishpuppy.com",
        "great-host.in",
        "gsrv.co.uk",
        "guerillamail.biz",
        "guerillamail.com",
        "guerillamail.net",
        "guerillamail.org",
        "guerrillamail.com",
        "guerrillamailblock.com",
        "haltospam.com",
        "hotpop.com",
        "ieatspam.eu",
        "ieatspam.info",
        "ihateyoualot.info",
        "imails.info",
        "inboxclean.com",
        "inboxclean.org",
        "incognitomail.com",
        "incognitomail.net",
        "ipoo.org",
        "irish2me.com",
        "jetable.com",
        "jetable.fr.nf",
        "jetable.net",
        "jetable.org",
        "junk1e.com",
        "kaspop.com",
        "kulturbetrieb.info",
        "kurzepost.de",
        "lifebyfood.com",
        "link2mail.net",
        "litedrop.com",
        "lookugly.com",
        "lopl.co.cc",
        "lr78.com",
        "maboard.com",
        "mail.by",
        "mail.mezimages.net",
        "mail4trash.com",
        "mailbidon.com",
        "mailcatch.com",
        "maileater.com",
        "mailexpire.com",
        "mailin8r.com",
        "mailinator.com",
        "mailinator.net",
        "mailinator2.com",
        "mailincubator.com",
        "mailme.lv",
        "mailnator.com",
        "mailnull.com",
        "mailzilla.org",
        "mbx.cc",
        "mega.zik.dj",
        "meltmail.com",
        "mierdamail.com",
        "mintemail.com",
        "moncourrier.fr.nf",
        "monemail.fr.nf",
        "monmail.fr.nf",
        "mt2009.com",
        "mx0.wwwnew.eu",
        "mycleaninbox.net",
        "mytrashmail.com",
        "neverbox.com",
        "nobulk.com",
        "noclickemail.com",
        "nogmailspam.info",
        "nomail.xl.cx",
        "nomail2me.com",
        "no-spam.ws",
        "nospam.ze.tc",
        "nospam4.us",
        "nospamfor.us",
        "nowmymail.com",
        "objectmail.com",
        "obobbo.com",
        "onewaymail.com",
        "ordinaryamerican.net",
        "owlpic.com",
        "pookmail.com",
        "proxymail.eu",
        "punkass.com",
        "putthisinyourspamdatabase.com",
        "quickinbox.com",
        "rcpt.at",
        "recode.me",
        "recursor.net",
        "regbypass.comsafe-mail.net",
        "safetymail.info",
        "sandelf.de",
        "saynotospams.com",
        "selfdestructingmail.com",
        "sendspamhere.com",
        "shiftmail.com",
        "****mail.me",
        "skeefmail.com",
        "slopsbox.com",
        "smellfear.com",
        "snakemail.com",
        "sneakemail.com",
        "sofort-mail.de",
        "sogetthis.com",
        "soodonims.com",
        "spam.la",
        "spamavert.com",
        "spambob.net",
        "spambob.org",
        "spambog.com",
        "spambog.de",
        "spambog.ru",
        "spambox.info",
        "spambox.us",
        "spamcannon.com",
        "spamcannon.net",
        "spamcero.com",
        "spamcorptastic.com",
        "spamcowboy.com",
        "spamcowboy.net",
        "spamcowboy.org",
        "spamday.com",
        "spamex.com",
        "spamfree24.com",
        "spamfree24.de",
        "spamfree24.eu",
        "spamfree24.info",
        "spamfree24.net",
        "spamfree24.org",
        "spamgourmet.com",
        "spamgourmet.net",
        "spamgourmet.org",
        "spamherelots.com",
        "spamhereplease.com",
        "spamhole.com",
        "spamify.com",
        "spaminator.de",
        "spamkill.info",
        "spaml.com",
        "spaml.de",
        "spammotel.com",
        "spamobox.com",
        "spamspot.com",
        "spamthis.co.uk",
        "spamthisplease.com",
        "speed.1s.fr",
        "suremail.info",
        "tempalias.com",
        "tempemail.biz",
        "tempemail.com",
        "tempe-mail.com",
        "tempemail.net",
        "tempinbox.co.uk",
        "tempinbox.com",
        "tempomail.fr",
        "temporaryemail.net",
        "temporaryinbox.com",
        "thankyou2010.com",
        "thisisnotmyrealemail.com",
        "throwawayemailaddress.com",
        "tilien.com",
        "tmailinator.com",
        "tradermail.info",
        "trash2009.com",
        "trash-amil.com",
        "trashmail.at",
        "trash-mail.at",
        "trashmail.com",
        "trash-mail.com",
        "trash-mail.de",
        "trashmail.me",
        "trashmail.net",
        "trashymail.com",
        "trashymail.net",
        "tyldd.com",
        "uggsrock.com",
        "wegwerfmail.de",
        "wegwerfmail.net",
        "wegwerfmail.org",
        "wh4f.org",
        "whyspam.me",
        "willselfdestruct.com",
        "winemaven.info",
        "wronghead.com",
        "wuzupmail.net",
        "xoxy.net",
        "yogamaven.com",
        "yopmail.com",
        "yopmail.fr",
        "yopmail.net",
        "yuurok.com",
        "zippymail.info",
        "jnxjn.com",
        "trashmailer.com",
        "klzlk.com",
    );

    $email_split = explode('@', $email);
    $email_domain = $email_split[1];

    if (in_array($email_domain, $blacklist)) {
        //Return 1, disposable email detected
        return 1;
    } else {
        //Return 0, no match found
        return 0;
    }
}

$email = $_POST["email"];

if (validEmail($email) == true) {
    if (disposablecheck($email) == 1) {
        //do stuff for disposable emails
        echo "false";
    } else {
        //do stuff if not disposable email
        echo "true";
    };
    return;
} else {
    echo "false";
    return;
};

function validEmail($email) {
    $isValid = true;
    $atIndex = strrpos($email, "@");
    if (is_bool($atIndex) && !$atIndex) {
        $isValid = false;
    } else {
        $domain = substr($email, $atIndex + 1);
        $local = substr($email, 0, $atIndex);
        $localLen = strlen($local);
        $domainLen = strlen($domain);
        if ($localLen < 1 || $localLen > 64) {
            // local part length exceeded
            $isValid = false;
        } else if ($domainLen < 1 || $domainLen > 255) {
            // domain part length exceeded
            $isValid = false;
        } else if ($local[0] == '.' || $local[$localLen - 1] == '.') {
            // local part starts or ends with '.'
            $isValid = false;
        } else if (preg_match('/\\.\\./', $local)) {
            // local part has two consecutive dots
            $isValid = false;
        } else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {
            // character not valid in domain part
            $isValid = false;
        } else if (preg_match('/\\.\\./', $domain)) {
            // domain part has two consecutive dots
            $isValid = false;
        } else if
        (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) {
            // character not valid in local part unless 
            // local part is quoted
            if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $local))) {
                $isValid = false;
            }
        }
        if ($isValid && !(checkdnsrr($domain, "MX") || checkdnsrr($domain, "A"))) {
            // domain not found in DNS
            $isValid = false;
      }
   }
   return $isValid;
}

?>

Any suggest?
Thanks and best regards
Brio