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 »
Polecamy
Reklama
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
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1455
Debata w sprawie ACTA: internauci spodziewali się chyba czegoś innego
14
PHP 5.3.9 nie pozwoli hakerom zawiesić serwera. Pozwoli za to przejąć nad nim kontrolę
28
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
Źle się dzieje z Chrome, ze stabilnością coraz gorzej. Gdzie się podziała słynna izolacja procesów?
26
Internet w EU bez Facebooka i Google? Firmy nie mają wyboru: albo się dostosują, albo…
10
Zaktualizuj PHP do wersji 5.4, zyskasz za darmo nawet o kilkudziesiąt procent wyższą wydajność aplikacji
6
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
[Aktualizacja] Facebook zablokował Demotywatory.pl. W czym zawiniły?
36
FBI zamknęło Megaupload. Anonimowi dali się sprowokować. Teraz ich akcja uzasadni potrzebę SOPA?
17
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1455
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
„Donald matole, twój rząd dopadną kibole” – hakerska elita przyłącza się do walki z ACTA
23
Klamka jeszcze nie zapadła. Minister prosi Donalda Tuska, by wstrzymał się z podpisywaniem ACTA
24
Społeczność
Ebhossmith Witam jestem Pan Ebhossmith, Dobre, uzasadnione i wiarygodne pożyczki...
DerDevil Mnie zatkało. Taka kwota i to w tak krótkim czasie. A najlepsze jest w tym...
sLn Tytuł rodem z onetu lub faktu...
1 primo - pobieranie nie jest...
ananas Pani Joanna powinna częściej czytać Matta Cuttsa i zaglądać na forum...
hipokryci Warto zauważyć, że przeważająca część instytucji publicznych również...
kajoj Ja już w takim razie nie rozumiem..co jest karane a co nie...udostępnianie...
Dawid11111 dokładnie ponieważ polskie prawo mówi jasno: można pobierać dla własnego...
- 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)
- Marek: problem z menu (2)
- Marek: Własne checkboxy w HTML,CSS (1)
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