Patiko? Prenumeruok el. paštu

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

5 responses to “Asmens kodas”

  1. Vaidas Žilionis says:

    OK vadinasi turim ir perl versija :)

  2. Rasa says:

    Jei pabusi nakti ir pajusi, kad storas, raudonai apsirenges vyras kis tave i maisa, neissigask! Tai reiskia, kad kazkas taves paprase kaledoms dovanu!

    Su artejanciomis sventemis!

  3. Xawiers says:

    :)

    zek kad leistu tik viena url linka per posta + tikrink pagal lt zodyneli :)

  4. Vaidas Žilionis says:

    Vienas linkas irgi spamas :) jei deda bileka…, reiks greiciausia uzdeti su image verify number tipo sistemele pasidaryti arba wordpress isimesti ir nesikankinti, ten jau toolsu bus antispam.

Leave a Reply

Your email address will not be published. Required fields are marked *

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