10.10.2019

Laravel Paket yüklemeden TC Kimlik Kontrolü

Laravel

İnternet üzerinde Laravel kullanarak T.C. Kimlik Numarısını kontrol edebileceğiniz Paketler mevcut ancak paket kullanmadan kendi kontrollerinizi yazarak da T.C.Kimlik Numarasını denetleyebilir ve kullanıcılarınıza doğru yazdıra bilirsiniz.

Öncelikle Komut satırımıza aşağıdaki kodu yazıyoruz:

php artisan make:rule TcKn 

Bu komut sayesinde app/Rules/TcKn.php dosyasını TcKn Class'ı ile birlikte oluşturmuş olduk.

Oluşturulan app/Rules/TcKn.php dosyasının içeriği aşağıdaki gibi olmalı(Laravel 5.8)


namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class TcKn implements Rule
{
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        //
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The validation error message.';
    }
}

TcKn.php içerisine artık kendi fonskiyonumuzu yazmalıyız. Bu kontrolü e-devlete bağlanarak değil, TC Kimlik kuralına göre yaptıracağız. Dosya içerisinde:


   public function passes($attribute, $value)
    {
        //
    }
    

Kısmını buluyoruz ve aşağıdaki gibi düzenliyoruz.



/**

 * Determine if the validation rule passes.

 *

 * @param  string  $attribute

 * @param  mixed  $value

 * @return bool

 */

    public function passes($attribute, $value)

    {

    $tc=$value;

    $TekToplam = 0;

    $CiftToplam= 0;

        if($tc[0]==0) {

            return false; // ilk rakam 0 olamaz

            }

        if(strlen($tc)!=11){

            return false;

            //11 karakter olmalı

        }

        for($i=0; $i

        {

            if($i%2==0) $TekToplam+= $tc[$i]; else $CiftToplam+= $tc[$i] ;

            }

            if(($TekToplam+$CiftToplam)%10!=$tc[10]) {

                return false;

            //ilk 10 rakamın mod 10'u son rakama eşit olup olmadığı kontrol ediyoruz

            }

            if((($TekToplam*7)-($CiftToplam-$tc[9]))%10!=$tc[9]) {

                return false;

            // 1,3,5,7,9 rakamlarının toplamının 7 ile çarpımından 2,4,6,8 rakamlarının toplamını çıkartıp kalan sayının mod 10'nu alıp kimlik numarasının 10. karakterine eşit olup olmadığını kontrol ediyoruz.

            }

        return true;

    }

Bir de kendi hata mesajımızı ekleyelim.


 /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'TC Kimlik Numarası Hatalıdır.';
    }
}

Artık Sınıfımızı (CLASS) tanımladık. Şimdi bu sınıfı istediğimiz Controller'da TC form girdisi için gerekli doğrulama şartı (Validate) olarak kullanabiliriz. (yeni kayıt, ya da düzenleme için) Kayıt için örnek kod:


public function store(Request $request)
    {
        $this->validate($request, [
            'tc' => new TcKn,
        ]);
        $requestData = $request->all();
            }
        User::create($requestData);

Faydalı olması dileğiyle

Yazar: Can BAYAT
Kimdir: 2015 yılından bu yana EMD Enerji Merkezi Danışmanlık şirketine bağlı olarak çalışmaktadır. 2016 SAÜ Fen Bilimleri Enstitüsü Jeofizik Mühendisliği Yüksek Lisans mezunudur. Evli ve bir çocuk babasıdır.
| | canbayat [at] gmail |