Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Funkcja sprawdzająca PESEL, Funkcja sprawdzająca PESEL
szerszenn
post 14.08.2008, 08:33:13
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 14.08.2008

Ostrzeżenie: (0%)
-----


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;
}
?>


Ten post edytował szerszenn 14.08.2008, 10:22:35
Go to the top of the page
+Quote Post
skowron-line
post 14.08.2008, 09:09:36
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Wrzuć kod w odpowiedni BBCODE będzie bardziej czytelny


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
batman
post 14.08.2008, 09:22:18
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




@szerszenn Popraw bbcode.
@skowron-line Używaj przycisku raportuj.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
barthpl
post 14.08.2008, 10:52:28
Post #4





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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

Ten post edytował barthpl 14.08.2008, 10:53:53


--------------------
Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
Go to the top of the page
+Quote Post
zimi
post 16.08.2008, 09:38:10
Post #5





Grupa: Zarejestrowani
Postów: 233
Pomógł: 9
Dołączył: 3.06.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował zimi 16.08.2008, 09:39:23
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:18