Patiko? Prenumeruok el. paštu

Straipsniai pagal gairę

Asmens kodas

Reikia patikrinti asmens kodo teisingumą? Manau šis dalykas jums pravers. Skanaus.

Algoritmas lietuviško asmens kodo (nuo 65 puslapio).

PHP, JavaScript versija pateikti nuo manęs, kiti buvo parodyti kaip komenarai senojoje blogo versijoje.

PHP

PHP - Copy Code

 1 <?

 2 /**

 3  * Tikrina ar asmens kodas

 4  *

 5  * @param string $s

 6  * @return bool

 7  */

 8 

 9 function ar_asmens_kodas($s) {

10   if (!is_numeric($s) || strlen($s)!=11) {

11     return false;

12   }

13   $d=0; $e=0; $b=1; $c=3;

14   for ($i=0;$i<10;$i++) {

15     $a=$s[$i];

16     $d=$d+($b*$a);

17     $e=$e+($c*$a);

18     $b++; if ($b==10) $b=1;

19     $c++; if ($c==10) $c=1;

20   }

21   $d=$d % 11;

22   $e=$e % 11;

23   if ($d==10) {

24     $i = ($e == 10) ? 0 : $e;

25   } else {

26       $i = $d;

27   }

28   return ($s[10]==$i) ? true : false;

29 }

30 

31 /**

32 * Butinai reikia paduotu stringa siam scriptui atveju, pvz

33 * ar_asmens_kodas('38011254123');

34 */

35 ?>

Javscript

Javascript – Copy Code

 1 function tikrinti_akoda(kodas) {

 2 var i,a,b,c,d,e;

 3 var s = new String(kodas);

 4     d=0;

 5     e=0;

 6     b=1;

 7     c=3;

 8     for (i=0;i<10;i++) {

 9         a=s.charAt(i);

10         d=d+(b*a);

11         e=e+(c*a);

12         b=b+1;

13         if (b==10)

14           b=1;

15         c=c+1;

16         if (c==10)

17             c=1;

18      }

19      d=d % 11;

20      e=e % 11;

21      if (d==10) {

22           if (e==10)

23             i=0;

24           else

25             i=e;

26      } else

27           i=d;

28      if (s.charAt(10)==i)

29          return true;

30      else

31          return false;

32 }

Perl

http://search.cpan.org/~kudarasp/Asmens-Kodas-0.02/lib/Asmens/Kodas.pm

MS SQL

Copy Code

 1 CREATE PROCEDURE asmensKodoTikrinimasSP

 2 (      @AsmensKodas bigint

 3 )

 4 AS

 5 BEGIN

 6   DECLARE @L  INTEGER,

 7             @M1 INTEGER,

 8             @M2 INTEGER,

 9             @M3 INTEGER,

10             @M4 INTEGER,

11             @D1 INTEGER,

12             @D2 INTEGER,

13             @R1 INTEGER,

14             @R2 INTEGER,

15             @R3 INTEGER,

16             @K  INTEGER,

17             @ATS BIT

18 

19     IF @AsmensKodas &gt; 10000000000

20     BEGIN

21          IF @AsmensKodas &lt; 69999999999

22          BEGIN

23               SET @L = @AsmensKodas / 10000000000

24               SET @AsmensKodas = @AsmensKodas - (10000000000 * @L)

25               SET @M1 = @AsmensKodas / 1000000000

26               SET @AsmensKodas = @AsmensKodas % 1000000000

27               SET @M2 = @AsmensKodas / 100000000

28               SET @AsmensKodas = @AsmensKodas % 100000000

29               SET @M3 = @AsmensKodas / 10000000

30               SET @AsmensKodas = @AsmensKodas % 10000000

31               SET @M4 = @AsmensKodas / 1000000

32               SET @AsmensKodas = @AsmensKodas % 1000000

33               SET @D1 = @AsmensKodas / 100000

34               SET @AsmensKodas = @AsmensKodas % 100000

35               SET @D2 = @AsmensKodas / 10000

36               SET @AsmensKodas = @AsmensKodas % 10000

37               SET @R1 = @AsmensKodas / 1000

38               SET @AsmensKodas = @AsmensKodas % 1000

39               SET @R2 = @AsmensKodas / 100

40               SET @AsmensKodas = @AsmensKodas % 100

41               SET @R3 = @AsmensKodas / 10

42               SET @AsmensKodas = @AsmensKodas % 10

43               SET @K = @AsmensKodas

44 

45               DECLARE @Suma INTEGER, @Liekana INTEGER

46               SET @Suma = @L * 1 + @M1 * 2 + @M2 * 3 + @M3 * 4 + @M4 * 5 +

47                          @D1 * 6 + @D2 * 7 + @R1 * 8 + @R2 * 9 + @R3 * 1

48               SET @Liekana = @Suma % 11

49               IF @Liekana &lt;&gt; 10

50               BEGIN

51                    IF @Liekana = @K

52                       SET @ATS = 1

53                    ELSE

54                       SET @ATS = 0

55               END

56               ELSE

57               BEGIN

58                    SET @Suma = @L * 3 + @M1 * 4 + @M2 * 5 + @M3 * 6 + @M4 * 7 +

59                               @D1 * 8 + @D2 * 9 + @R1 * 1 + @R2 * 2 + @R3 * 3

60                    SET @Liekana = @Suma % 11

61                    IF @Liekana &lt;&gt; 10

62                    BEGIN

63                       IF @Liekana = @K

64                          SET @ATS = 1

65                       ELSE

66                          SET @ATS = 0

67                    END

68                    ELSE

69                    BEGIN

70                         SET @Liekana = 0

71                         IF @Liekana = @K

72                            SET @ATS = 1

73                         ELSE

74                            SET @ATS = 0

75                    END

76               END

77          END

78          ELSE

79              SET @ATS = 0

80     END

81     ELSE

82         SET @ATS = 0

83 

84     SELECT @ATS

Kita

Na daugiau :) Dos versija

> home
  • Apie mane
  • Apklausos
  • Blogas
  • Lietblogs Search
  • Nuorodos
  • Reklama mano bloge
  • Search
  • Tags
  • Testas
  • Projektai
  • Kontaktuok
  • Archyvas