HEX
Server: LiteSpeed
System: Linux sv4.hami.host 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User: armgroup (1008)
PHP: 8.2.32
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, mail, socket_create, socket_create_listen, socket_create_pair, link, dl, openlog, syslog, stream_socket_server, curl_multi_init
Upload Files
File: /home/armgroup/libs/app/Rules/NationalCode.php
<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class NationalCode implements Rule
{
    public function passes($attribute, $value)
    {
        $value = to_latin_numbers($value);

        $cDigitLast = substr($value, strlen($value) - 1);

        $fMeli = strval(intval($value));

        if ((str_split($fMeli))[0] == '0' && ! (strlen($fMeli) >= 8 && strlen($fMeli) < 10)) {
            return false;
        }

        $nineLeftDigits = substr($value, 0, strlen($value) - 1);

        $positionNumber = 10;

        $result = 0;

        foreach (str_split($nineLeftDigits) as $chr) {
            $digit = intval($chr);
            $result += $digit * $positionNumber;
            $positionNumber--;
        }

        $remain = $result % 11;

        $controllerNumber = $remain;

        if ($remain >= 2) {
            $controllerNumber = 11 - $remain;
        }

        return $cDigitLast == $controllerNumber;
    }

    public function message()
    {
        return 'کد ملی اشتباه است.';
    }
}