publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
7 skomentuj »

TAGI: php , pesel , programowanie

2010-07-12 08:38  |  Michał Beyer

Jak sprawdzić dane zawarte w numerze PESEL z wykorzystaniem PHP?

Jak sprawdzić dane zawarte w numerze PESEL z wykorzystaniem PHP?

Każdy obywatel przebywający na terenie Polski posiada numer PESEL. Różnorodne, często o specjalistycznym przeznaczeniu, usługi internetowe mogą wymagać jego podania. Warto więc więdzieć, na jakiej zasadzie jest on generowany i jak sprawdzić jego poprawność.

 

Analiza problemu

PESEL to akronim od nazwy „Powszechny Elektroniczny System Ewidencji Ludności". Składa się zawsze z 11-tu cyfr identyfikujących osobę fizyczną. Cały symbol numeryczny można podzielić na trzy części:

  • sześciu pierwszych cyfr określających datę urodzenia,
    • pierwsza i druga wskazuje na rok,
    • trzecia i czwarta miesiąc oraz stulecie,
    • ostatnie dwie dzień,
  • cyfr od siódmej do dziesiątej numer serii,
    • ostatnia z nich określa płeć,
  • ostatniej, cyfry kontrolnej, będącej wartością sumy kontrolnej wygenerowanego numeru.

Rozważmy więc następujący PESEL:

102704

2832

5


Pierwsze dwie cyfry przekazują informację, że mamy do czynienia z rokiem 10 konkretnego stulecia. Stulecie odczytujemy z kodowania następnej dwójki:

  • ich zapisanie w sposób naturalny wskazuje na lata od 1900 do 1999 roku. Dzieje się tak dla wartości od 01 do 12,
  • do numeru miesiąca dodawana jest liczba 20 dla lat od 2000 do 2099. Dzieje się tak dla wartości od 21 do 32,
  • do numeru miesiąca dodawana jest liczba 40 dla lat od 2100 do 2199. Dzieje się tak dla wartości od 41 do 52,
  • do numeru miesiąca dodawana jest liczba 60 dla lat od 2200 do 2299. Dzieje się tak dla wartości od 61 do 72,
  • do numeru miesiąca dodawana jest liczba 80 dla lat od 1800 do 1899. Dzieje się tak dla wartości od 81 do 92.

Co można zauważyć twórcy algorytmu zabezpieczyli się na wiele lat w przód.

Analizując nasz przypadek, można zauważyć, że liczba 27 wskazuje na siódmy miesiąc roku, a ponieważ do niego dodana jest wartość dwadzieścia, to cały numer będzie dotyczył pierwszego stulecia, drugiego tysiąclecia.

Cała część ciągu będzie wskazywać więc na 4 lipca 2010 roku.

Z drugiej sekwencji interesować nas będzie płeć. Zasada tu jest prosta. Cyfry parzyste oznaczają płeć żeńską, nieparzyste męską. Tak oto można wywnioskować, że w naszym przykładzie mamy do czynienia z kobietą.

Na przekór wszystkiemu bardzo ważnym aspektem jest wartość kontrolna. Pozwala ona na sprawdzenie poprawności całego numeru PESEL. Warto analizować podany ciąg, aby nie zwracać użytkownikowi niepoprawnych danych.

Sprawdzanie opiera się na przemnożeniu pierwszych dziesięciu cyfr przez z góry zdefiniowaną wagę, zsumowanie wyników, podzielenie modulo 10 (reszty z dzielenia przez 10) i odjęcie wyniku, także od liczby 10.

Wagi: 1 3 7 9 1 3 7 9 1 3
Przemnożone: (1*1) + (3*0) + (7*2) + (9*7) + (1*0) + (3*4) + (7*2) + (9*8) + (1*3) + (3*2) = 1 + 0 + 14 + 63 + 0 + 12 + 14 + 72 + 3 + 6 = 185
Wynik: 10 - (185 % 10) = 10 - 5 = 5
Cyfra kontrolna: 5

Jeżeli rezultat jest równy jedenastej cyfrze to numer PESEL jest poprawny.

«poprzednia 1 2 następna »

publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
7 skomentuj »

Polecane książki

Czytaj Webhosting

Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.

Zarejestruj domenę

Sprawdź dostępność swojej domeny:

.pl: 0 zł   .com: 19.90 zł
.com.pl: 0 zł   .eu: 19.90 zł