Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Walidacja PESEL - brak informacji
Forum PHP.pl > Forum > Przedszkole
n3xt
Użyłem skryptu, który jest najbardziej popularnym w sieci i problem jest w tym, że nie wyświetla mi się żadna informacja zwrotna czy wprowadzona wartość jest poprawna.

  1. <?php
  2.  
  3. ini_set('display_errors','1');
  4.  
  5. echo 'Podany numer PESEL: ';
  6.  
  7. $PES = $_POST['PES'];
  8.  
  9. echo $PES;
  10.  
  11. echo ' jest: ';
  12.  
  13. function PESEL($PES)
  14. {
  15. if (!preg_match('/^[0-9]{11}$/',$PES))
  16. {
  17. echo 'za krótki';
  18. return false;
  19.  
  20. }
  21.  
  22. $arrSteps = array(1, 3, 7, 9, 1, 3, 7, 9, 1, 3);
  23. $intSum = 0;
  24. for ($i = 0; $i < 10; $i++)
  25. {
  26. $intSum += $arrSteps[$i] * $PES[$i];
  27. }
  28. $int = 10 - $intSum % 10;
  29. $intControlNr = ($int == 10)?0:$int;
  30. if ($intControlNr == $PES[10])
  31. {
  32. return true;
  33. echo 'prawidłowy';
  34. }
  35. return false;
  36. echo 'nieprawidłowy';
  37. }
  38. ?>


gdzie jest błąd?
trueblue
Nie wywołujesz nigdzie funkcji PESEL.
Jeśli zwracasz return, to raczej echo już się nie wykona. Zresztą dla porządku, to echo powinno być poza tą funkcją, lecz zależne od wyniku jaki zwróci.
jacobson
nie wywolales funkcji sprawdzajacej pesel
n3xt
ok, dodałem

  1. echo PESEL($PES);


i już sprawdza. tylko, jak teraz opuścić tą funkcję aby mając poprawny Pesel skrypt szedł dalej w moim przypadku to już zapisanie do bazy danych, bo wpisując tą walidację w cały skrypt nie działa nic a próbuje poprać plik test.php

  1. <?php
  2.  
  3. ini_set('display_errors','1');
  4.  
  5.  
  6. $NAZ = $_POST['NAZ'];
  7. $NIP = $_POST['NIP'];
  8. $REG = $_POST['REG'];
  9. $SEX = $_POST['SEX'];
  10. $IMIE = $_POST['IMIE'];
  11. $NAZW = $_POST['NAZW'];
  12. $PES = $_POST['PES'];
  13. $DOK = $_POST['DOK'];
  14. $SER = $_POST['SER'];
  15. $KOD = $_POST['KOD'];
  16. $MIE = $_POST['MIE'];
  17. $ULI = $_POST['ULI'];
  18. $TEL = $_POST['TEL'];
  19. $KOD2 = $_POST['KOD2'];
  20. $MIE2 = $_POST['MIE2'];
  21. $ULI2 = $_POST['ULI2'];
  22. $MAIL = $_POST['MAIL'];
  23.  
  24. $Y = date ('Y');
  25.  
  26. echo PESEL($PES);
  27.  
  28. function PESEL($PES)
  29. {
  30. if (!preg_match('/^[0-9]{11}$/',$PES))
  31. {
  32. echo 'za krótki';
  33. return false;
  34.  
  35. }
  36.  
  37. $arrSteps = array(1, 3, 7, 9, 1, 3, 7, 9, 1, 3);
  38. $intSum = 0;
  39. for ($i = 0; $i < 10; $i++)
  40. {
  41. $intSum += $arrSteps[$i] * $PES[$i];
  42. }
  43. $int = 10 - $intSum % 10;
  44. $intControlNr = ($int == 10)?0:$int;
  45. if ($intControlNr == $PES[10])
  46. {
  47. echo 'prawidłowy';
  48. return true;
  49.  
  50. }
  51. echo 'nieprawidłowy';
  52. return false;
  53.  
  54. }
  55. switch($SEX)
  56. {
  57. case 'K';
  58. $PL = 'Panią';
  59. break;
  60. case 'M';
  61. $PL = 'Panem';
  62. break;
  63. }
  64.  
  65.  
  66.  
  67. if($IMIE and $NAZW and $PES) {
  68. $connection = mysql_connect('localhost', 'root', '******')
  69. or die('Brak połączenia z serwerem MySQL');
  70. $db = mysql_select_db('klienci', $connection)
  71. or die('nie mogę połączyć się z bazą danych');
  72. $U = mysql_query("select count(distinct umowa) from umowy;");
  73. $UMO = mysql_fetch_array($U);
  74. $ins = mysql_query("INSERT INTO umowy SET Id=NULL, Umowa='$UMO', Firma='$NAZ', Nip='$NIP', Regon='$REG', Plec='$SEX', Imie='$IMIE', Nazwisko='$NAZW', Pesel='$PES', Dokument='$DOK', Seria='$SER', Kodpocz='$KOD', Miasto='$MIE', Ulica='$ULI', Kodpocz2='$KOD2', Miasto2='$MIE2', Ulica2='$ULI2', Telefon='$TEL', Email='$MAIL'");
  75. mysql_close($connection);
  76.  
  77.  
  78. header( 'Content-type: application/msword' );
  79. header( 'Content-Disposition: inline, filename:"umo.rtf"');
  80.  
  81. $DATA = date( 'd-m-Y' );
  82.  
  83.  
  84. $nazwa_pliku = 'umowa.rtf';
  85. $wyswietl = file_get_contents($nazwa_pliku);
  86. $wyswietl = str_replace( '<<UMO>>', $UMO.'/'. $Y, $wyswietl );
  87. $wyswietl = str_replace( '<<DATA>>', $DATA, $wyswietl );
  88. $wyswietl = str_replace( '<<NAZ>>', $NAZ, $wyswietl );
  89. $wyswietl = str_replace( '<<NIP>>', $NIP, $wyswietl );
  90. $wyswietl = str_replace( '<<REG>>', $REG, $wyswietl );
  91. $wyswietl = str_replace( '<<SEX>>', $PL, $wyswietl );
  92. $wyswietl = str_replace( '<<IMIE>>', $IMIE, $wyswietl );
  93. $wyswietl = str_replace( '<<NAZW>>', $NAZW, $wyswietl );
  94. $wyswietl = str_replace( '<<PES>>', $PES, $wyswietl );
  95. $wyswietl = str_replace( '<<DOK>>', $DOK, $wyswietl );
  96. $wyswietl = str_replace( '<<SER>>', $SER, $wyswietl );
  97. $wyswietl = str_replace( '<<KOD>>', $KOD, $wyswietl );
  98. $wyswietl = str_replace( '<<MIE>>', $MIE, $wyswietl );
  99. $wyswietl = str_replace( '<<ULI>>', $ULI.',', $wyswietl );
  100. $wyswietl = str_replace( '<<KOD2>>', $KOD2, $wyswietl );
  101. $wyswietl = str_replace( '<<MIE2>>', $MIE2, $wyswietl );
  102. $wyswietl = str_replace( '<<ULI2>>', $ULI2.',', $wyswietl );
  103. $wyswietl = str_replace( '<<TEL>>', $TEL, $wyswietl );
  104. $wyswietl = str_replace( '<<MAIL>>', $MAIL, $wyswietl );
  105. $wyswietl = str_replace( 'ą', '\u261a', $wyswietl );
  106. $wyswietl = str_replace( 'ó', '\u243a', $wyswietl );
  107.  
  108. echo $wyswietl;
  109. }
  110. ?>
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.