Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Obliczanie pełnoletności na podstawie PESEL z formularza
Forum PHP.pl > Forum > Przedszkole
hyhyhy
Witam,

Mam do zrobienia formularz rejestracyjny, gdzie na potrzeby rejestracji user wpisuje PESEL. Następnie jest jeszcze warunek pełnoletności usera (Checkbox) - pomyślałem, żeby to połączyć i od razu z peselu sprawdzać, czy dana osoba jest pełnoletnia, czyli uciąć jakimś substr pierwsze 6 cyfr, no i pozmieniać na format daty - jeszcze nad tym nie myślałem ale brzmi w miarę prosto.

Natomiast niewiadomą dla mnie jest, jak porównać czy od daty, którą uzyskam (data urodzin) do daty obecnej minęło 18 lat.
Jest mi w stanie ktoś doradzić, jak to rozwiązać?
arzach
  1. $dzis = time();
  2. $miesiac_urodzenia = 6;
  3. $dzien_urodzenia = 2;
  4. $rok_urodzenia = 1984;
  5. $time = mktime( 0, 0, 0, $miesiac_urodzenia, $dzien_urodzenia, $rok_urodzenia);
  6. $wiek = $dzis - $time;
  7. echo floor((((($wiek/60)/60)/24)/365));
matisob
365 dni lub 366 dni ma roczek więc tu jest mały problem - > echo floor((((($wiek/60)/60)/24)/365));
Fifi209
Jaki problem używać datetime ? ;]
buliq
Lepiej zrobić to tak:
  1. $pesel = 92010294829;
  2. $dzis = time();
  3. $miesiac_urodzenia = substr($pesel,2,2);
  4. $dzien_urodzenia = substr($pesel,4,2);
  5. $rok_urodzenia = 1900+substr($pesel,0,2);
  6. if ($miesiac_urodzenia=>21 && $miesiac_urodzenia<=32) // 2000 rok i wyzej
  7. {
  8. $rok_urodzenia = 2000+substr($pesel,0,2);
  9. $miesiac_urodzenia -= 20;
  10. }
  11. $time = mktime( 0, 0, 0, $miesiac_urodzenia, $dzien_urodzenia, $rok_urodzenia);
  12. $t = strtotime("-18 years"); // lub -216 months
  13. $wiek = $t-$time;
  14. if ($wiek <0) echo "za mlody :((";
  15.  


z palca nie testowane smile.gif
Crozin
@arzach, @buliq: Ale wiecie, że niektórzy ludzie urodzili się w latach 60-tych, a nawet wcześniej?
@hyhyhy: Pierwsze sześć liczb numeru PESEL nie koniecznie musi oznaczać datę urodzenia. Możesz to traktować co najwyżej jako dodatek i np. na poziomie JS po wpisaniu PESEL-u automatycznie uzupełnić datę urodzenia, jednak musisz pozostawić możliwość ręcznej korekcji.

Co do tematu, @Fifi209 podał prawidłową odpowiedź.
buliq
@up a co to za różnica który rok? Sprawdź: to. Liczą się stulecia smile.gif
hyhyhy
Wielki dzięki buliq smile.gif

@Crozin też dzięki, masz rację, będę musiał jednak userowi kazać to zatwierdzić - no trudno, nie wszystko się z automatu da zrobić smile.gif
skowron-line
@hyhyhy poczytaj
Cytat
Dla odróżnienia poszczególnych stuleci przyjęto następującą metodę ich kodowania:

* dla osób urodzonych w latach 1900 – 1999 — miesiąc zapisywany jest w sposób naturalny (bez zmian),
* dla odróżnienia osób urodzonych w innych latach niż 1900 – 1999 do numeru miesiąca dodawane są następujące wielkości:

- dla lat 1800 – 1899 — 80
- dla lat 2000 – 2099 — 20
- dla lat 2100 – 2199 — 40
- dla lat 2200 – 2299 — 60


ze strony http://www.gazetapodatnika.pl/artykuly/nad...pesel-a_751.htm, bo system nadawania numeru pesel nie jest taki oczywisty jak się wydaje
Fifi209
skowron może nie zauważyłeś, ale temat "liczą się stulecia" był już poruszany, był nawet link do wikipedii, gdzie można sobie o tym przeczytać. ;]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.