Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Walidator nowego dowodu
k@zio
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 27.02.2007

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


Szukałem czegoś do sprawdzania poprawności serii i numeru nowego dowodu, ale nigdzie nie ma. Może się komuś przyda.
Wiem, że to można by było ładniej zrobić, ale mi potrzebne było tylko sprawdzenie sumy kontrolnej.


  1. <?php
  2. function sprawdzDowod($dowod){
  3.  $dowod = strtoupper(trim($dowod));
  4.  $znaki = array (
  5.  '0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9',
  6.  'A' => '10', 'B' => '11', 'C' => '12', 'D' => '13', 'E' => '14', 'F' => '15', 'G' => '16', 'H' => '17', 'I' => '18', 'J' => '19',
  7.  'K' => '20', 'L' => '21', 'M' => '22', 'N' => '23', 'O' => '24', 'P' => '25', 'Q' => '26', 'R' => '27', 'S' => '28', 'T' => '29',
  8.  'U' => '30', 'V' => '31', 'W' => '32', 'X' => '33', 'Y' => '34', 'Z' => '35');
  9. $suma = 7 * $znaki[$dowod[0]];
  10. $suma += 3 * $znaki[$dowod[1]];
  11. $suma += 1 * $znaki[$dowod[2]];
  12. $suma += 7 * $znaki[$dowod[4]];
  13. $suma += 3 * $znaki[$dowod[5]];
  14. $suma += 1 * $znaki[$dowod[6]];
  15. $suma += 7 * $znaki[$dowod[7]];
  16. $suma += 3 * $znaki[$dowod[8]];
  17. $suma %= 10;
  18. if (($dowod[3] == $suma) && (strlen($dowod) == 9)) {
  19.  return true;
  20. } else return false;
  21. } ;
  22. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Spirit86
post
Post #2





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Ja bym proponował tak, sprawdzanie 9 znaków, bo po co coś sprawdzać, skoro podstawowa sprawa (9 znaków) nie jest spełniona smile.gif.

  1. <?php
  2. function sprawdzDowod($dowod){
  3. if(strlen($dowod)==9){
  4.  $dowod = strtoupper(trim($dowod));
  5.  $znaki = array (
  6.  '0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9',
  7.  'A' => '10', 'B' => '11', 'C' => '12', 'D' => '13', 'E' => '14', 'F' => '15', 'G' => '16', 'H' => '17', 'I' => '18', 'J' => '19',
  8.  'K' => '20', 'L' => '21', 'M' => '22', 'N' => '23', 'O' => '24', 'P' => '25', 'Q' => '26', 'R' => '27', 'S' => '28', 'T' => '29',
  9.  'U' => '30', 'V' => '31', 'W' => '32', 'X' => '33', 'Y' => '34', 'Z' => '35');
  10. $suma = 7 * $znaki[$dowod[0]];
  11. $suma += 3 * $znaki[$dowod[1]];
  12. $suma += 1 * $znaki[$dowod[2]];
  13. $suma += 7 * $znaki[$dowod[4]];
  14. $suma += 3 * $znaki[$dowod[5]];
  15. $suma += 1 * $znaki[$dowod[6]];
  16. $suma += 7 * $znaki[$dowod[7]];
  17. $suma += 3 * $znaki[$dowod[8]];
  18. $suma %= 10;
  19. return ($dowod[3] == $suma);
  20. }
  21. else return false;
  22. } ;
  23. ?>


Ten post edytował Spirit86 28.03.2008, 11:50:20


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
k@zio
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 27.02.2007

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


Można by i dodać sprawdzanie czy pierwsze trzy znaki to litery i czy reszta to liczby, ale mi zależało tylko na sumie smile.gif
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




jak piszesz skrypty to wlącz sobie raportowanie wszystkich bledow. Przeciez teraz jak dasz za malo znakow w sprawdzanym dowodzie to poleci ci masa NOTICE'ów

Oczywiscie poprawka Spirit załatwi sprawe. Jak juz dawac cos do dzialu algorytmy,klasy,funkcje to niech to bedzie porządne.


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

"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

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: 21.08.2025 - 12:35