webForumDet fria alternativet

personnummerkontroll

8 svar · 479 visningar · startad av yaz

yazMedlem sedan maj 20021 028 inlägg
#1

Ah. Detta är mitt första inlägg i webforum!

jag behöver er hjälp.

Har sökt efter tidigare inlägg inom temat personnummer men alla hänvisade till inlägg med en länk. När jag klickade på den länken fick jag 404 error :l

Nu till scriptet;

Ett skript som kontrollerar sista siffran i personnumret (helst personnummer med bindestreck, då detta är rätt standariserat). Om kontrollen är positiv dvs att kontrollsiffran är korrekt, ska formuläret köras i vanlig ordning - informationen ska alltså skickas vidare till verify.asp som är en bekräftelsesida.

Om kontrollen visar på ett felaktigt personnummer ska man helt enkelt få upp en 'alert' och formuläret ska inte köras. Man ska alltså stanna kvar där man är på sidan för att rätta till felet.

Är detta svårt att göra? Hoppas att någon kan hjälpa mig med detta. Mitt hopp ligger hos er! ;)

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Kanske lite overkill, men jag slängde ihop ett personnummer-objekt som gör en del andra kollar också.

function personnummer(nr){
	this.valid=false;
	if(!nr.match(/^(\d{2})(\d{2})(\d{2})\-(\d{4})$/)){ return false; }
	this.now=new Date(); this.nowFullYear=this.now.getFullYear()+""; this.nowCentury=this.nowFullYear.substring(0,2); this.nowShortYear=this.nowFullYear.substring(2,4);
	this.year=RegExp.$1; this.month=RegExp.$2; this.day=RegExp.$3; this.controldigits=RegExp.$4;
	this.fullYear=(this.year*1<=this.nowShortYear*1)?(this.nowCentury+this.year)*1:((this.nowCentury*1-1)+this.year)*1;
	var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(this.fullYear%400==0||this.fullYear%4==0&&this.fullYear%100!=0){ months[1]=29; }
	if(this.month*1>12||this.day*1>months[1]){ return false; }
	this.alldigits=this.year+this.month+this.day+this.controldigits;
	var nn="";
	for(var n=0;n<this.alldigits.length;n++){ nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); }
	this.checksum=0;
	for(var n=0;n<nn.length;n++){ this.checksum+=nn.substring(n,n+1)*1; }
	this.valid=(this.checksum%10==0)?true:false;
	this.sex=parseInt(this.controldigits.substring(2,3))%2;
}

Från formulärstaggen kan du anropa det med;

<form action="verify.asp" method="post" onSubmit="pn=new personnummer(this.p.value); if(!pn.valid){ alert('Felaktigt personnummer'); } return pn.valid;">
Personnummer: <input type="text" name="p">
...resten av formuläret
yazMedlem sedan maj 20021 028 inlägg
#3

skriptet funkar utmärkt!! det är ju klart det skulle funka :D

*Lägger in det på sajten. Sparar det i arkivet för användbara skript* .....ah så där!

Jag tackar dig från hela mitt hjärta! TACK! :D

Du kommer finnas omnämnd på sajten; den saken är säker! :)

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#4

Kollar det scriptet organisationsnummer också?

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#5

Kollade lite noggrannare nu. Snygg script. Kanske något för Wf's script-arkiv? :)

voigtann1Medlem sedan juni 20019 519 inlägg
#6

fattar inte hur du orkar göra en sådan sak =)

JojoxxMedlem sedan juni 20004 308 inlägg
#7

Har tittat lite närmare på orginisationsnummer och de kan exempelvis börja på 556303. Detta skulle för ett personnummer betyda att personen är född månad 63, och det är ju inte ett godkänt personnummer. Plockar man dock bort kollen av datum så validerar resten. Checksumman är alltså den samma, men jag ska leta lite till och se om det finns något annat att kolla på org.nr.

Jag kan lägga upp det i arkivet sen.

medialabsMedlem sedan mars 20023 686 inlägg
#8

hojta till när ni har kommit på hur man kollar Organisations nummer...

skulle själv behöva ett sådant

yazMedlem sedan maj 20021 028 inlägg
#9

Jojoxx! Jag ska berätta vad som hänt:

Jag och ett par kompisar skojade lite grand, och vi skulle testa våra personnummer (okej, SÅ skoj var det inte. men iaf). Jag använde mig av skriptet som du skrivit.

Alla testar sina personnummer och klarar det galant.

Men en av polarnas personnummer stämde inte enligt skriptet. Vi blev väldigt konfunderade och skojade med honom rejält. Att han hade glömt sitt personnummer eller lärt sig det fel.. :e

men för att lösa det laddade vi ner ett c++ pogram som gör samma koll....och då klarade hans personnummer kontrollen...

då måste det vara något fel på skriptet som du skrivit....eller? jag vet inte.... :q

149 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)