27 sierpnia 2008
PESEL oraz informacje, które możemy dzięki niemu zdobyć
Tworząc aplikację, która będzie przechowywała informacje na temat klientów chciałem jak najbardziej uprościć operację dodawania nowego. W ten czas w mej głowie zaświeciła się żaróweczka mówiąca o tym, że nie trzeba wprowadzać oddzielnie daty urodzin, zaznaczać płci oraz dodatkowo wpisywać PESELu. Wszak wystarczy on sam. Od idei do realizacji pozostał już tylko jeden krok – powstała funkcja, która ma za zadanie na podstawie wprowadzonego PESELu podać nam informacje których żądamy. Kodu objaśniać nie trzeba ;)
- <?php
- /*
- Wyciąganie informacji na podstawie PESELu
- **********************************************/
- function pesel($pesel, $act = 'valid', $format = 'd.m.Y'){
- /*
- Narzuć typ
- jeśli liczba cyfr jest różna
- od zera to błąd
- *********************************/
- if( $act == 'sex'){
- /*
- Rozpoznawanie płci
- **************************/
- if ( (int)$_POST['pesel']{9}%2 == 1 ) $sex = 'm'; else $sex = 'f';
- return $sex;
- }
- if( $mc>=1 AND $mc<=12 ) $year = 1900 + $year;
- elseif( ($mc-20)>=1 AND ($mc-20)<=12 ) { $mc = ($mc-20); $year = 2000 + $year; }
- elseif( ($mc-40)>=1 AND ($mc-40)<=12 ) { $mc = ($mc-40); $year = 2100 + $year; }
- elseif( ($mc-60)>=1 AND ($mc-60)<=12 ) { $mc = ($mc-60); $year = 2200 + $year; }
- elseif( ($mc-80)>=1 AND ($mc-80)<=12 ) { $mc = ($mc-80); $year = 1800 + $year; }
- else return false;
- if( $act == 'data'){
- /*
- Data urodzin
- **************************/
- if( $year>=1970 AND $year <=2037){
- }
- else{
- $data = '';
- for($i=0;$i<=$length;$i++){
- if($format[$i]=='d')
- $data .= $day;
- elseif($format[$i]=='j')
- {
- else $data .= $day;
- }
- elseif($format[$i]=='m')
- {
- if($mc < 10){ $data .= '0'.$mc; }
- else $data .= $mc;
- }
- elseif($format[$i]=='n')
- {
- else $data .= $mc;
- }
- elseif($format[$i]=='o' OR $format[$i]=='Y')
- {
- $data .= $year;
- }
- elseif($format[$i]=='y')
- {
- }
- else{
- $data .= $format[$i];
- }
- }
- return $data;
- }
- }else{
- /*
- Poprawność PESELu
- *************************/
- for ($i=0; $i<10;$i++) $suma += $pesel[$i]*$wagi[$i];
- $liczba = 10 - $suma%10;
- if ($liczba==10) $liczba=0;
- if ($pesel[10]==$liczba) return true; else return false;
- }
- }
- ?>
Jestem świadom fakktu, że lepiej by to było w formie obiektówki – metoda do wprowadzenia peselu i operowanie później na nim, ale aktualnie brak czasu ;)
9 komentarzy