Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z funkcja sprawdzającą PESEL
piotrekk
post
Post #1





Grupa: Zarejestrowani
Postów: 123
Pomógł: 2
Dołączył: 13.11.2006

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


Witam,
mam dziwny problem z funkcją sprawdzającą numer PESEL. Korzystam z tej samej funkcji przy sprawdzaniu podczas rejestracji oraz przy sprawdzaniu numeru podczas updatu danych przez użytkownika. I w pierwszym przypadku działa bez zarzutu, natomiast przy update wyskakuję mi błąd.

: Notice: Undefined variable: wk

funkcja:

  1.  
  2. function checkPesel($PESEL, $location, $connection, $sex="?")
  3. {
  4. if(!empty($PESEL) && trim(strlen($PESEL)) == 11)
  5. {
  6. if ($PESEL[9] % 2 and $sex=="K") return false;
  7. else if (!$PESEL[9] % 2 and $sex=="M") return false;
  8. $w=array(1,3,7,9);
  9. for ($i=0;$i<=9;$i++)
  10. $wk = ($wk+$PESEL[$i]*$w[$i % 4]) % 10;
  11. $k = (10-$wk) % 10;
  12. if ($PESEL[10]==$k)
  13. {
  14. $input = trim($PESEL);
  15.  
  16. mysql_real_escape_string($PESEL, $connection);
  17.  
  18. return $input;
  19. }
  20. else
  21. {
  22. bład
  23. }
  24. }


Czy wiecie może dlaczego ?

thx

oczywiście pesel, nie wiem czemu napisalem nip. thx

Ten post edytował piotrekk 7.01.2010, 12:27:19
Go to the top of the page
+Quote Post
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


NIP czy PESEL ?


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
piotrekk
post
Post #3





Grupa: Zarejestrowani
Postów: 123
Pomógł: 2
Dołączył: 13.11.2006

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


oczywiscie pesel
thx

sprawa jeszcze wygląda tak, że w sumie ta funkcja poprawnie sprawdza numer pesel, bo po cofnieciu pojawia się odpowiedni komunikat jeżeli jest błędny nip lub zmienia go jeżeli jest poprawny, tylko przy akceptacji zmian wyrzuca właśnie ze wk jest undifinited, a w sumie przecież jest...



Ten post edytował piotrekk 7.01.2010, 12:32:10
Go to the top of the page
+Quote Post
blooregard
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




A w której konkretnie linijce? Czy to cały plik? Może masz tę zmienną $wk jeszcze w innym miejscu wywoływaną bez deklaracji? (bo wtedy pokaże się notice o niezadeklarowanej zmiennej)


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
piotrekk
post
Post #5





Grupa: Zarejestrowani
Postów: 123
Pomógł: 2
Dołączył: 13.11.2006

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


wlaśnie nie tylko w tym miejscu jest!! przy dodaniu pierwszy raz do bazy danych działa poprawnie, ale jak robie update to wyskakuję taki dziwny błąd i nie mam pojecia dlaczego. Tak naprawdę ta funkcja sprawdza czy to dobry nip i jak wezmę wstecz to wyskakuje mi info czy dobrze czy źle, ale właśnie nie przechodzi do odpowiedniego pliku potwierdzającego zmianę tylko wysypuję taki błąd.

Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




rety.... komunikat bledu wskazuje ci w ktorej linii jest blad. pokaz nam tę linię


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
blooregard
post
Post #7


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
to wyskakuję taki dziwny błąd

To nie jest błąd, tylko informacja interpretera o użyciu niezadeklarowanej zmiennej. To raz.
Dwa - interpreter ZAWSZE podaje, w której linijce kodu notice,warrning albo parse error występuje. Więc, wklej cały plik i cały (z numerem linii) komunikat notice odnośnie zmiennej $wk.



--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
piotrekk
post
Post #8





Grupa: Zarejestrowani
Postów: 123
Pomógł: 2
Dołączył: 13.11.2006

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


  1.  
  2. function checkPesel($PESEL, $location, $connection, $sex="?")
  3. {
  4. if(!empty($PESEL) && trim(strlen($PESEL)) == 11)
  5. {
  6. if ($PESEL[9] % 2 and $sex=="K") return false;
  7. else if (!$PESEL[9] % 2 and $sex=="M") return false;
  8. $w=array(1,3,7,9);
  9. for($i=0;$i<=9;$i++)
  10. $wk=($wk+$PESEL[$i]*$w[$i % 4]) % 10; // TO TA LINIA
  11. $k=(10-$wk) % 10;
  12. if ($PESEL[10]==$k)
  13. {
  14. $input = trim($PESEL);
  15.  
  16. mysql_real_escape_string($PESEL, $connection);
  17.  
  18. return $input;
  19. }
  20. else
  21. {
  22. $_SESSION['error'] = "Błędny numer PESEL!";
  23. header("Location: $location");
  24. }
  25. }
  26.  


komunikat: Notice: Undefined variable: wk on line 108

108 - to ta która zaznaczyłem powyżej


Ten post edytował piotrekk 7.01.2010, 13:05:26
Go to the top of the page
+Quote Post
blooregard
post
Post #9


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




A komunikat i numer linii?
Kolego ~piotrekk, walnij sobie jakąs kawkę na pobudzenie szarych komórek, co?


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no i prawidlowo:
$wk=($wk+$PESEL[$i]*$w[$i % 4]) % 10;

drugie $wk w linii powyzej za pierwszym razem nie istnieje. zrob tak:
$wk=0;
$wk=($wk+$PESEL[$i]*$w[$i % 4]) % 10;



--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
piotrekk
post
Post #11





Grupa: Zarejestrowani
Postów: 123
Pomógł: 2
Dołączył: 13.11.2006

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


komunikat błędu napisałem już w pierwszym poście. Dla pewności podałem go jeszcze raz powyżej. Odpowiednik tej lini tu to linia numer: 10

thx nospor
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 Aktualny czas: 20.08.2025 - 18:55