EpicWEB.pl

webdesign, programowanie, phat lewt!

Ostatni projekt

ddrpl.com

Ostatnie wiadomości

[PHP] Generowanie nr. dowodu osobistego

Wrzucam, bo może komuś się przyda - potrzebowałem generatora nr. dowodu osobistego do testowania aplikacji, która nie dość, że sprawdza poprawność to jeszcze nie pozwala na użycie tego samego numeru więcej niż raz. Kod PHP jest portem kodu Java z blogu Not All About Java.

function generateDO(){
        $seria = $numer = "";
        $suma=0;
        $waga = array(7,3,1,7,3);

        for($i=0;$i<3;$i++){            
                $seria .= chr(rand(0, (ord('Z') - ord('A'))) + ord('A'));
                $suma += $waga[$i] * (ord(substr($seria, $i, 1)) - ord('A') + 10);
        }
        
        for($i=0;$i<5;$i++){
                $numer .= chr(rand(0, ord('9') - ord('0')) + ord('0'));         
                $suma += $waga[$i] * (ord(substr($numer, $i, 1)) - ord('0'));           
        }
        
        return $seria . ($suma%10) . $numer;
}

Komentarze

Avatar użytkownika 1

Komentarz użytkownika Wasacz

12 05 2010

$serua

Avatar użytkownika 2

Komentarz użytkownika BTM

12 05 2010

Dzięki, poprawione.

4

Komentarz użytkownika Romek

09 08 2010

może by skrócić trochę ten kod bo w pętli for takie wyrażenia jak
(ord('Z') - ord('A')) albo ord('A')
się dość mało zmieniają :-) i co więcej w kodach ASCII są stałe.

Druga sprawa, że w literach serii nie używane są litera O (jak OLA)
i litera Q (jak QUAD) - literki Q jestem mniej pewien.

Trzecia sprawa to kolejność wydawania dowodów w danych seriach.
Do tej pory - połowa roku 2010 - wydawane są dowody osobiste serii zaczynającej się od liter AS*.
Sądząc po tempie wydawania nowych dowodów - obowiązek wymiany już był - teraz tylko ewentualne zagubione, zmienione i maturzyści - to seria A** się przez dwa lata nie skończy. Tak więc generator powinien nie generować - na razie przynajmniej - dowodów gdzie pierwszą literą jest litera inna niż A.

Przy okazji; jeśli ktoś ma dane z seriami DO (numer nie konieczny żeby nie naruszać prawa o danych osobowych) i datami wydania to byłbym wdzięczny. zylla (at) wipos.p.lodz.pl

5

Komentarz użytkownika xp

20 11 2010

JAK tego używać

Avatar użytkownika 6

Komentarz użytkownika BTM

20 11 2010

Któego? Skryptu PHP? Wstawić i wywołać.

Zostaw komentarz