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 »
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
22
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Anonymous upubliczniają 1,7 GB danych wykradzionych Departamentowi Sprawiedliwości USA
11
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Zostań webmasterem polskiego rządu, zarobisz na komfortowe życie dla siebie i swojej rodziny
33
Społeczność
gonzales Javowcy pozdrawiają dotnetowców xD
kaziks Galaxy S II - u mnie po aktualizacji Firefox działa strasznie zacina się...
Doniek Szkoda że strona z demo nie działa - non stop się przeładowuje
bartez Niech zaczną jeszcze bardziej ograniczać programistów, to zdziwią się ilu...
Dave Smith Jestem Pastor Dave Smith prywatny pożyczkodawca pieniądze, z czego ponad...
marcusm Fajna reklama produktu za 500 zł
rza a to starsze aplikacje nie będą działać i kompilacja pod Windows SDK 7.1...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
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ł |









#1 plh 2010-07-12 11:49:28 0
IP: 94.75.108.[...] Opera/9.80 (Windows NT 5.1; U; en) Presto/2.6.30 Version/10.60
#2 Artur 2010-07-12 16:52:33 0
IP: 87.207.240.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4
#3 Kenjiro 2010-07-13 09:16:46 0
IP: 158.75.204.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:2.0b1) Gecko/20100630 Firefox/4.0b1
#4 Singollo 2010-07-13 13:06:31 0
IP: 78.8.147.[...] Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 SUSE/5.0.372.0-1.1 (KHTML, like Gecko) Chrome/5.0.372.0 Safari/533.4
#5 crush 2010-07-15 16:48:00 0
IP: 82.210.138.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6
#6 mariobros 2010-07-16 19:05:12 0
IP: 193.93.91.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 GTB7.1
#7 Olsza 2010-07-23 13:34:16 0
IP: 217.17.32.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4
#8 cojack 2010-07-24 01:21:06 0
IP: 89.79.56.[...] Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.2.7) Gecko/20100716 Ubuntu/10.04 (lucid) Firefox/3.6.7
#9 Marcin Kosedowski 2010-08-01 11:51:57 0
IP: 89.78.187.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.125 Safari/533.4
#10 yahuto 2010-08-04 13:23:54 0
IP: 217.113.233.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; pl-pl) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8
#11 fifi 2010-08-24 13:47:47 0
IP: 87.239.221.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.126 Safari/533.4
#12 Romek 2011-12-03 03:28:40 0
IP: 83.22.192.[...] Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0