• 04-11-2024, 20:02:06
    #1
    Merhaba kendim için ChatGPT'ye yazdırdım. Sizede lazım olur diye paylaşıyorum. Kod WPForms'da sayı alanı eklediğiniz yerde sayı alanına CSS olarak wpf-num-limit eklediğinizde ve aşağıdaki kodu funcations.php dosyasına eklediğinizde sayı alanı en az 11 hane en çok 11 hane girilmesi zorunlu hale gelir. Ayrıca Yanlış TC girmelerini engellemek içinde fonksiyon TC doğrulaması yapar.

    /**
     * Validate Turkish ID Number (T.C. Kimlik Numarası) for a specific input field.
     * Enforce exact 11-character length with custom error messages.
     * Apply the class "wpf-num-limit" to the field to enable.
     */
      
    function wpf_dev_tckn_validation() {
        ?>
        <script type="text/javascript">
            jQuery(function() {
                // Validate T.C. Kimlik Number (Turkish ID)
                function isValidTCKN(tckn) {
                    if (tckn.length !== 11) return false;
                    if (!/^\d+$/.test(tckn)) return false;
                    if (tckn[0] === '0') return false;
    
                    let totalOdd = parseInt(tckn[0]) + parseInt(tckn[2]) + parseInt(tckn[4]) + parseInt(tckn[6]) + parseInt(tckn[8]);
                    let totalEven = parseInt(tckn[1]) + parseInt(tckn[3]) + parseInt(tckn[5]) + parseInt(tckn[7]);
    
                    let checkSum10 = ((totalOdd * 7) - totalEven) % 10;
                    if (checkSum10 !== parseInt(tckn[9])) return false;
    
                    let totalAll = totalOdd + totalEven + parseInt(tckn[9]);
                    let checkSum11 = totalAll % 10;
                    if (checkSum11 !== parseInt(tckn[10])) return false;
    
                    return true;
                }
    
                // Apply validation on input event and form submit
                jQuery('.wpf-num-limit input').on('input', function() {
                    let tckn = jQuery(this).val();
                    
                    // Limit input to exactly 11 characters
                    if (tckn.length > 11) {
                        jQuery(this).val(tckn.slice(0, 11));
                    }
                    
                    // Check if input length is exactly 11 and valid T.C. Kimlik Number
                    if (tckn.length < 11) {
                        jQuery(this)[0].setCustomValidity('Lütfen 11 Haneli TC kimlik numaranızı giriniz.');
                    } else if (!isValidTCKN(tckn)) {
                        jQuery(this)[0].setCustomValidity('Lütfen Doğru T.C. kimlik numarası giriniz.');
                    } else {
                        jQuery(this)[0].setCustomValidity('');
                    }
                });
    
                jQuery('.wpf-num-limit input').closest('form').on('submit', function(e) {
                    let inputField = jQuery(this).find('.wpf-num-limit input');
                    if (inputField.val().length !== 11) {
                        e.preventDefault();
                        inputField[0].setCustomValidity('Lütfen 11 Haneli TC kimlik numaranızı giriniz.');
                        inputField[0].reportValidity();
                    } else if (!isValidTCKN(inputField.val())) {
                        e.preventDefault();
                        inputField[0].setCustomValidity('Lütfen Doğru T.C. kimlik numarası giriniz.');
                        inputField[0].reportValidity();
                    }
                });
            });
        </script>
        <?php
    }
    add_action( 'wpforms_wp_footer_end', 'wpf_dev_tckn_validation', 30 );
  • 04-11-2024, 20:20:25
    #2
    tckn için son rakam mutlaka çift rakam olma zorunluluğu vardır. tüm bunları geçip mernisten kontrol ettirseniz efsane olur
  • 04-11-2024, 21:16:47
    #3
    xAsAx adlı üyeden alıntı: mesajı görüntüle
    tckn için son rakam mutlaka çift rakam olma zorunluluğu vardır. tüm bunları geçip mernisten kontrol ettirseniz efsane olur
    Dışarıda gezen datayı kullanmak suç. Gerekli izin alınıp API ile doğrulama yaptırılabilir ancak.
  • 04-11-2024, 21:18:12
    #4
    GOKHANF4 adlı üyeden alıntı: mesajı görüntüle
    Dışarıda gezen datayı kullanmak suç. Gerekli izin alınıp API ile doğrulama yaptırılabilir ancak.
    dışarıda gezen datayla zaten doğrulama yapamazsınz akıl karı değil elbette nvi api lerini kullanarak yapmanız laızm...