Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja sprawdzająca PESEL
Forum PHP.pl > Forum > PHP
szerszenn
Witam wszystkich mam problem odnośnie funkcji sprawdzajacej poprawność PESELU a dokładnie to niewiem gdzie ją wklejić by to działało.

KOD FORMULARZA:

Kod
{<strong>Pesel:</strong><input type=\"text\" name=\"pesel\" size=\"11\" maxlength=\"11\"
style=\"position: absolute; left: 180px; background-color: cornsilk; font-style: italic; color: gray\">


funkcja sprawdzania pesel:
Kod
<?php
function check_pesel($pesel)
{
  if (strlen($pesel) != 11 || !is_numeric($pesel))
     return 0;
  $steps = array(1, 3, 7, 9, 1, 3, 7, 9, 1, 3);
  for ($x = 0; $x < 10; $x++) {
    $sum_nb += $steps[$x] * $pesel[$x];
  }
  $sum_m = 10 - $sum_nb % 10;
  if ($sum_m == 10)
     $sum_c = 0;
  else
     $sum_c = $sum_m;
  if ($sum_c == $pesel[10])
     return 1;
  return 0;
}
?>
skowron-line
Wrzuć kod w odpowiedni BBCODE będzie bardziej czytelny
batman
@szerszenn Popraw bbcode.
@skowron-line Używaj przycisku raportuj.
barthpl
Ja bym trochę zmienił twój kod.
  1. <?php
  2. // zmienna określa czy formularz zostal wysłany;
  3. $showForm = true;
  4.  
  5. // sprawdzamy, czy zmienna $submit jest pusta
  6. if (!empty($_POST['submit'])) {
  7.  
  8. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  9. // i zarazem czy są poprawne, np.: funkcja isPESEL( $pesel )
  10. if ( !empty($_POST['imie_nazwisko']) && !empty($_POST['pesel']) && isPESEL($_POST['pesel'])/* && pozostale warunki */ ) {
  11.  
  12.  
  13. // tutaj też można sprawdzić czy PESEL jest poprawny i jak nie to wypisać odpowiedni komunikat
  14. // if( !isPESEL($_POST['pesel'])) {
  15. //  echo "<div>numer PESEL jest niepoprawny</div>";
  16. //  break;
  17. // }
  18.  
  19. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  20. // zmienna $message zawiera treść wiadomości
  21. $message = "Imię i Nazwisko: $_POST[imie_nazwisko]\nPesel: $_POST[pesel] ...";
  22.  
  23. // zmienna $header zawiera przede wszystkim adres zwrotny
  24. $header = "From: $_POST[imie_nazwisko] <$_POST[email]>";
  25.  
  26. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  27. @mail("<A href='mailto:xxxx@xxx.xx","Formularz'>xxxx@xxx.xx","Formularz</A> PK","$message","$header")
  28. or die('Nie udało się wysłać wiadomości');
  29.  
  30. // wyświetlenie komunikatu w przypadku powodzeniae
  31. echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong>";
  32. $showForm = false;
  33. }
  34. // wyświetlenie komunikatu 
  35. else
  36. echo "<div>Nie wszystkie pola zostały wypełnione lub zostały one wypełnione w niewłaściwy sposób</div>";
  37. }
  38.  
  39. // wyświetlamy formularz jeżeli jest potrzebny
  40. if( $showForm ) {
  41. echo "<form method=\"post\">" .
  42.  " <table border=\"0\">" .
  43.  " <tr><td><strong>Imię i Nazwisko:</strong><td>" .
  44.  " <td><input type=\"text\" name=\"imie_nazwisko\" size=\"30\" maxlength=\"40\" value=\"$_POST[imie_nazwisko]\" >*</td>" .
  45.  " </tr>" .
  46.  // pozostała część formularza;
  47.  " <tr><td colspan=\"2\">" .
  48.  " <input type=\"submit\" name=\"submit\" value=\"Wyślij\"> " .
  49.  " <input type=\"reset\" value=\"Wyczyść\">" .
  50.  " </td><tr/><table></form>";
  51.  
  52. echo "<div>Pola formularza oznaczone (*) są obowiązkowe!</div>";
  53. }
  54. ?>


Będzie to bardziej praktyczne. Formularz pojawia się do momentu kiedy nie zostanie wysłany (lub pojawi się problem z wysyłaniem) i automatycznie wypełnia pola (zwróć uwagę na 44 linijkę kodu).

Co do samego sprawdzania poprawności numeru PESEL to warunek jest dodany w miejscu gdzie sprawdzane jest wypełnienie wszystkich pół (tutaj zaproponowałem warunek w postaci isPESEL($_POST['pesel'])). Oczywiście sprawdzanie można wstawić jeszcze w innym miejscu, wewnątrz if'a który sprawdza czy wszystkie pola zostały wypełnione.

Pozostaję jedynie zdefiniowanie funkcji sprawdzającej. Jej prosty przykład:
  1. <?php
  2. function isPESEL( $pesel )
  3. {
  4. return preg_match( '/^[0-9]{11}$/', $pesel );
  5. }
  6. ?>

Oczywiście można ją zrobić bardziej wyrafinowaną.

-->
nie zauważyłem że poprawiłeś swojego posta ale mam nadzieję, że to ci pomoże
zimi
nie używałem tej klasy ale @Cysiaczek w swojej sygnaturce ma link do napisanej przez siebie klasy która robi więcej niż tylko sprawdza poprawność

pod adresem: http://kavuka.cal.pl/fsp/entry-7b106b447f3...05bb3650d12.htm
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.