Prognoza średniego kursu za tysiąc odsłon 1,2 zł (na dziś)

Statystyki na miesiąc:
wrzesień
 (wszystkie)
Stan z: 09 września 10, 05:14
Czy robisz kopie zapasowe ważnych danych (dokumenty, zdjęcia itd.)?





Kategoria:

Walidacja numeru PESEL (Check Pesel)

Dodano: wtorek, 24 marca 09

Skrypt sprawdzający poprawność numeru PESEL, wyciąga również datę urodzenia oraz płeć. Miejsce na wpisanie numeru zaznaczono na czerwono.

Funkcja sprawdza poprawnie w zakresie od 1800 do 2300 roku.

Listing:

<?php
function CheckPesel($pesel, &$date, &$sex)
{
$weights = array(1,3,7,9,1,3,7,9,1,3);
$Sum = 0;
for($i = 0; $i < 10; $i++)
{
$sum += $pesel[$i] * $weights[$i];
}
$sum = $sum % 10;
$checkSum = (10 - $sum) % 10;
if ($pesel[10] <> $checkSum) return false;
else
{
if ($pesel[9] % 2 == 0)
$sex = 'K' ;
else
$sex = 'M';
$yearEndStr = substr($pesel, 0, 2);
$monthStr= substr($pesel, 2, 2);
$dayStr = substr($pesel, 4,2);
$day = intval($dayStr);
$month = intval($monthStr);
if ($day > 31) return false;
else
{
$yearStartStr = '19';
if ($month >= 80)
{
$yearStartStr = '18';
$month = $month - 80;
}
else
if ($month >= 60)
{
$yearStartStr = '22';
$month = $month - 60;
}
else
if ($month >= 40)
{
$yearStartStr = '21';
$month = $month - 40;
}
else
if($month >= 20)
{
$yearStartStr = '20';
$month = $month - 20;
}
}
$yearStr = $yearStartStr.$yearEndStr;
$year = intval($yearStr);
if (($month < 1) or ($month > 12))
return false;
else
{
if ($month == 2)
{
if ($day > 29) return false;
else
if (($day == 29) and (($year % 4) <> 0) or ($yearEnd == '00')) return false;
}
else
if (($day == 31) and (($month == 4) or ($month == 6) or ($month == 9) or ($month == 11)))
return false;
}
}
$monthStr = $month;
if (strlen($monthStr) < 2)
$monthStr = '0'.$monthStr;
$date = $yearStr.'-'.$monthStr.'-'.$dayStr;
return true;
}
// wywołanie
// nr pesel
$pesel = 'tutaj wpisz numer pesel';
if(CheckPesel($pesel, $date, $sex))
{
echo $date.'<br>'; // data urodzenia
echo $sex; // płeć
}
else
{
echo'niepoprawny nr pesel';
}
?>
 

oceń: 
Autor: darecki41

Komentarze

A może w JavaScript'cie (validate*)

form1.#subform[0].PESEL::validate - (JavaScript, client)
-----------------------------------------------------------------------
var pesel = this.rawValue.toString() ;

mnoznik = new Array("1","3","7","9","1","3","7","9","1","3");

var nSum = 0;

for(i=0;i<10;i++) {

nSum = nSum + pesel.charAt(i) * mnoznik;

}

nSum = nSum%10%10;

nSum = 10 - nSum;

nSum = nSum%10%10;

if(nSum!=pesel.charAt(10)){

xfa.host.setFocus(this.somExpression);

false;

} else true;

jar

(27.03.2009, 10:02)

W powyższym przykładzie brakuje kawałka kodu :)
Mianowicie w pętli for brak wskazywania indeksu dla tablicy mnoznik, powinno być mnoznik. Po takim zabiegu kod spisuje się całkiem dobrze.

Filip

(15.06.2010, 15:10)
Wyślij do przyjaciół
   
 

Nie znalazłeś interesującego Cię materiału...?
Dodaj temat do POSZUKIWANYCH!!!

Ostatnio zaproponowane tematy:
MYSZKA a4tech.com 2,4G Wireles Optical Mouse G7-750
Prosty monitoring z kamerką USB w sieci
Adobe Premiere Pro CS5 5.0.2
Zakładamy własny blog - szybki przewodnik dla początkujących

Jesteś autorem ciekawego skryptu lub znalazłeś go w sieci?

- chcesz podzielić się swoją wiedzą z innymi
- zaistnieć w społeczności VISTA.PL
- zarabiać na dodanych przez Ciebie skryptach

Dołącz do społeczności VISTA.PL