/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Validering af CVR numre
Fra : Philips


Dato : 23-05-05 07:37

Kender I til en funktion, som kan validere danske CVR numre?

Vil hellere bruge en eksisterende fremfor at bygge min egen.

P



 
 
Jens Frøkjær (23-05-2005)
Kommentar
Fra : Jens Frøkjær


Dato : 23-05-05 08:48

Philips wrote:
> Kender I til en funktion, som kan validere danske CVR numre?
>
> Vil hellere bruge en eksisterende fremfor at bygge min egen.
>
> P
>
>
Det er der ikke så meget grund til længere, det sidste 'checkciffer' vil
nemlig i fremtiden ikke blive brugt som et checkciffer, da der er nogle
dage der er 'for mange' mange der har fødselsdag

http://www.cpr.dk/Index/dokumenter.asp?o=2&n=0&d=528&s=4 og andre ting
www.cpr.dk omhandler problematikken

Det må være herre øv at være den første der får et cpr-nummer der ikke
kan tjekkes...


--
Jens F!

Per Thomsen (23-05-2005)
Kommentar
Fra : Per Thomsen


Dato : 23-05-05 09:23

> Det er der ikke så meget grund til længere, det sidste 'checkciffer' vil
> nemlig i fremtiden ikke blive brugt som et checkciffer, da der er nogle
> dage der er 'for mange' mange der har fødselsdag
>
> http://www.cpr.dk/Index/dokumenter.asp?o=2&n=0&d=528&s=4 og andre ting
> på www.cpr.dk omhandler problematikken
>
> Det må være herre øv at være den første der får et cpr-nummer der ikke
> kan tjekkes...
>
Det var CVR-nr Philips spurgte på :)
Men en spændende artikel (som jeg kunne bruge - tak)

Per



Jens Frøkjær (23-05-2005)
Kommentar
Fra : Jens Frøkjær


Dato : 23-05-05 11:15

Per Thomsen wrote:
>>Det er der ikke så meget grund til længere, det sidste 'checkciffer' vil
>>nemlig i fremtiden ikke blive brugt som et checkciffer, da der er nogle
>>dage der er 'for mange' mange der har fødselsdag
>>
>>http://www.cpr.dk/Index/dokumenter.asp?o=2&n=0&d=528&s=4 og andre ting
>>på www.cpr.dk omhandler problematikken
>>
>>Det må være herre øv at være den første der får et cpr-nummer der ikke
>>kan tjekkes...
>>
>
> Det var CVR-nr Philips spurgte på :)
> Men en spændende artikel (som jeg kunne bruge - tak)
>
> Per
>
>
hehe - det så jeg også lige - men så ved I det andet!
--
Jens F!

Jens Frøkjær (23-05-2005)
Kommentar
Fra : Jens Frøkjær


Dato : 23-05-05 11:16

Jens Frøkjær wrote:
> Per Thomsen wrote:
>
>>> Det er der ikke så meget grund til længere, det sidste 'checkciffer' vil
>>> nemlig i fremtiden ikke blive brugt som et checkciffer, da der er nogle
>>> dage der er 'for mange' mange der har fødselsdag
>>>
>>> http://www.cpr.dk/Index/dokumenter.asp?o=2&n=0&d=528&s=4 og andre ting
>>> på www.cpr.dk omhandler problematikken
>>>
>>> Det må være herre øv at være den første der får et cpr-nummer der ikke
>>> kan tjekkes...
>>>
>>
>> Det var CVR-nr Philips spurgte på :)
>> Men en spændende artikel (som jeg kunne bruge - tak)
>>
>> Per
>>
>>
> hehe - det så jeg også lige - men så ved I det andet!
Gad vide hvorfor min klient valgte at svare der - burde naturligvis være
under Per Thomsens indlæg...
--
Jens F!

Per Thomsen (23-05-2005)
Kommentar
Fra : Per Thomsen


Dato : 23-05-05 13:09

> > hehe - det så jeg også lige - men så ved I det andet!
> Gad vide hvorfor min klient valgte at svare der - burde naturligvis være
> under Per Thomsens indlæg...

Hos mig står det under mit indlæg.

Per



Jens Frøkjær (23-05-2005)
Kommentar
Fra : Jens Frøkjær


Dato : 23-05-05 18:18

Per Thomsen wrote:
>>>hehe - det så jeg også lige - men så ved I det andet!
>>
>>Gad vide hvorfor min klient valgte at svare der - burde naturligvis være
>>under Per Thomsens indlæg...
>
>
> Hos mig står det under mit indlæg.
>
> Per
>
>
Det gør det også hus mig nu - efter et par genstarter af programmet -
underligt...
--
Jens F!

Denn!s H (23-05-2005)
Kommentar
Fra : Denn!s H


Dato : 23-05-05 09:15

"Philips" <a@b.c> skrev i en meddelelse
news:429179d0$0$79461$14726298@news.sunsite.dk...
> Kender I til en funktion, som kan validere danske CVR numre?
>

Der findes et JS, ved ikke om det viser korrekt.

<script>
function isValidCVR(sCVR)
{
var iCVR = new Number(sCVR);
var bValid = (((iCVR+'')!='NaN') && (sCVR.length==8))
if (bValid)
{
bValid = true;
var iRes = 0;
var sMul = '27654321';
for(var i=0; i<sCVR.length; i++)
{
iRes+= new Number(sCVR.substr(i,1))*(parseInt(sMul.substr(i,1)))
}
bValid = ((iRes % 11)==0);
}
return bValid
}
</script>
<form>
<input type="text" size="8" id="cvr" name="cvr">
<input type="button" value="Kontroler CVR" onclick="alert('CVR er '+((
isValidCVR(document.getElementById('cvr').value)) ? '' : 'ikke')+' valid')">
</form>



--
vh
Denn!s H



Denn!s H (23-05-2005)
Kommentar
Fra : Denn!s H


Dato : 23-05-05 09:20


"Denn!s H" <@> skrev i en meddelelse
news:429190f4$0$271$edfadb0f@dread11.news.tele.dk...
> "Philips" <a@b.c> skrev i en meddelelse
> news:429179d0$0$79461$14726298@news.sunsite.dk...
>> Kender I til en funktion, som kan validere danske CVR numre?
>>
>
> Der findes et JS, ved ikke om det viser korrekt.

.... krydstjek med www.cvr.dk



Philips (23-05-2005)
Kommentar
Fra : Philips


Dato : 23-05-05 14:17


"Philips" <a@b.c> wrote in message
news:429179d0$0$79461$14726298@news.sunsite.dk...
> Kender I til en funktion, som kan validere danske CVR numre?

Nu har jeg skrevet en baseret på en mail jeg fik fra CVR:

function Check_CVR ($CVR)
{
if ($CVR == False) return;

$Sum += substr ($CVR, $a++, 1) * 2;
$Sum += substr ($CVR, $a++, 1) * 7;
$Sum += substr ($CVR, $a++, 1) * 6;
$Sum += substr ($CVR, $a++, 1) * 5;
$Sum += substr ($CVR, $a++, 1) * 4;
$Sum += substr ($CVR, $a++, 1) * 3;
$Sum += substr ($CVR, $a++, 1) * 2;

$Wholes = floor (($Sum / 11));
$Remainder = ($Sum - ($Wholes * 11));

$Last_Digit = ($Remainder) ? (11 - $Remainder) : 0;

$CVR_Correct = ($Last_Digit == substr ($CVR, 7, 1)) ? True : False;

return $CVR_Correct;
}

Hvordan ville I gøre den smukkere?

Mailen er her:

Modulus 11
Alle CVR-numre overholder det såkaldte modulus 11-check. Det betyder at mens
de første 7 cifre er genereret fortløbende (stigende), bestemmes det 8.
ciffer ud fra de første syv via en "modulus 11-beregning".



Modulus 11-ckecket bruges hyppigt til identifikationsnumre, fx også til
CPR-numrene. Det giver mulighed for at checke om nummeret er falsk.



Check efter modulus 11


Princippet i checket kan forklares ved hjælp af et eksempel. CVR-nummeret
13-74-81-36 er opbygget på følgende måde, hvor "vægtene" er vedtaget på
forhånd:



Syv første cifre i CVR-nummeret
1
3
7
4
8
1
3

Vægt
2
7
6
5
4
3
2

Cifferet gange vægt
2
21
42
20
32
3
6




Summen af disse produkter er 126. Divideres 126 med 11, giver det 11 med en
rest på 5 (11*11 + 5 = 126).

Kontrolcifret beregnes ved at trække resten 5 fra 11, hvilket giver 6. Dette
ciffer er det ottende ciffer og kontrolcifret i CVR-nummeret.



Hvis resten bliver 1 skulle kontrolcifret efter metoden være 10. Da
2-cifrede kontroltal ikke kan benyttes, er det pågældende CVR-nr. ikke et
gyldigt/eksisterende CVR-nr.



P




Jacob Atzen (23-05-2005)
Kommentar
Fra : Jacob Atzen


Dato : 23-05-05 15:21

On 2005-05-23, Philips <a@b.c> wrote:
> Nu har jeg skrevet en baseret på en mail jeg fik fra CVR:
>
> function Check_CVR ($CVR)
> {
....
> }
>
> Hvordan ville I gøre den smukkere?

Mit bud:

function multiply($weight, $number) {
return $weight * $number;
}

function Check_CVR ($CVR)
{
if ($CVR == False) return;
$cvrarray = str_split((string) $CVR);
$controlNumber = array_pop($cvrarray);
$weights = array(2, 7, 6, 5, 4, 3, 2);
$Sum = array_sum(array_map('multiply', $weights, $cvrarray));

$Remainder = $Sum % 11;
$Last_Digit = (11 - $Remainder) % 11;

$CVR_Correct = ($Last_Digit == $controlNumber);
return $CVR_Correct;
}

--
Med venlig hilsen
- Jacob Atzen

Peter Brodersen (24-05-2005)
Kommentar
Fra : Peter Brodersen


Dato : 24-05-05 18:36

On 23 May 2005 14:20:57 GMT, Jacob Atzen <jacob@aub.dk> wrote:

> $Sum = array_sum(array_map('multiply', $weights, $cvrarray));

Vil man holde det i én funktion, kan man evt. erstatte 'multiply' med:
create_function('$w,$n','return $w*$n;')

Fx:
$Sum = array_sum(array_map(create_function('$w,$n','return $w*$n;'),
$weights, $cvrarray));

--
- Peter Brodersen

Jacob Atzen (24-05-2005)
Kommentar
Fra : Jacob Atzen


Dato : 24-05-05 19:15

On 2005-05-24, Peter Brodersen <usenet2005@ter.dk> wrote:
> On 23 May 2005 14:20:57 GMT, Jacob Atzen <jacob@aub.dk> wrote:
>
>> $Sum = array_sum(array_map('multiply', $weights, $cvrarray));
>
> Vil man holde det i én funktion, kan man evt. erstatte 'multiply' med:
> create_function('$w,$n','return $w*$n;')

Jamen dog, vidste ikke PHP kunne den slags. Tak for tippet :)

--
Med venlig hilsen
- Jacob Atzen

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste