<html> <head> <title>CPR nummer checker - kodet af Claes Andersen, Infonauterne</title> </head> <body> <% If Request.Form("cprnr")="" Then
' Hvis der ikke er indtaster data i formularfeltet, eller ' hvis det er første gang siden besøges, vises formularen
%> <form method="POST" action="cpr.asp"> Indtast CPR nummer som skal checkes: <input type="text" size="12" name="cprnr"> <input type="submit" value="Check CPR nummer" </form> <%
ElseIf Not IsNumeric(Left(Request.Form("cprnr"), 10)) Then Response.Write "Forkert indtastning. Prøv igen" ' Hvis værdien af formularen ikke er et tal, så vises en fejlmeddelelse
' Hvis det indtastede cprnummer er netop 10 cifre langt, så gennemføres nedenstående løkke, ' der checker gyldigheden af cprnummeret, ciffer for ciffer.
Do While taeller < 10
tegn = Mid(cpr, taeller, 1) mult = Mid(faktor, taeller, 1)
If IsNumeric(tegn) Then
' Hvis det indtastede tegn på pladsen som variablen taeller peger på er et tal, ' så foretages beregningen af tempsum, og tælleren taeller forøges med 1
Prøv f.eks. med følgende cpr-nummer: 010100-0400, de forkerte med andet end 0 bagest skulle svare 'rigtigt' med den oprindelige kode, men svare 'forkert' med rettelsen !-)
er det noget jeg har set mig blind på? jeg forhøjer gerne point så i begge får nogle.
Jeg vil jo gerne have at hvis der er fejl i CPR nr. så skal der retuner en fejl kode i Session("fejl"), jeg får fejl koder, men gør jeg noget galt her?
'---userid validering (cpr nr) if Request.Form("txtUserid") = "" then ' Hvis der ikke er indtaster data i formularfeltet, eller ' hvis det er første gang siden besøges, vises formularen Session("fejl")= "Indtast dit CPR nr.." response.Redirect("opret_bruger.asp") ElseIf Not IsNumeric(Left(Request.Form("txtUserid"), 10)) Then Session("fejl")= "Forkert indtastning. Prøv igen" response.Redirect("opret_bruger.asp") ' Hvis værdien af formularen ikke er et tal, så vises en fejlmeddelelse Else faktor = 432765432 tempsum = 0 taeller = 1 cpr = strUserid
kontroltal = 1 * Right(cpr, 1)
If Len(cpr) = 10 Then ' Hvis det indtastede cprnummer er netop 10 cifre langt, så gennemføres nedenstående løkke, ' der checker gyldigheden af cprnummeret, ciffer for ciffer. Do While taeller < 10 tegn = Mid(cpr, taeller, 1) mult = Mid(faktor, taeller, 1) If IsNumeric(tegn) Then ' Hvis det indtastede tegn på pladsen som variablen taeller peger på er et tal, ' så foretages beregningen af tempsum, og tælleren taeller forøges med 1 tempsum = tempsum + tegn * Mult taeller = taeller + 1 Else ' Hvis der er indtastet et ugyldigt tegn i cprnummeret, meldes nedenstående fejl. Session("fejl")= "Du har indtastet et ugyldigt tegn" response.Redirect("opret_bruger.asp") End If Loop ' Når tempsum endeligt er udregnet, checkes efter nedenstående model check = 11 - tempsum Mod 11 ' Hvis check svarer til cprnummeret sidste ciffer (kontroltal), eller check = 11, er ' cprnummeret gyldigt, og nedenstående meddelelse vises If tempsum Mod 11 = kontroltal Then foedselsdag = Left(cpr, 6) serienummer = Right(cpr, 4) 'Response.Write foedselsdag & "-" & serienummer & " er et gyldigt CPR-nummer." Else ' Hvis foregående check fejler, er der tale om et ugyldigt cpr-nummer, ' og nedenstående meddelelse vises Session("fejl")= "Cpr nummeret er ugyldigt" response.Redirect("opret_bruger.asp") End If Else Session("fejl")= "Indtast cpr.nr. med 10 cifre - UDEN bindestreg" response.Redirect("opret_bruger.asp") End If
Jeg kan ikke få det til at virke! har fundet ud af noget andet!
<% if Request.Form("cprnr") = "" then %> <form action="#" method="post"> <input name="cprnr" type="text" size="10" maxlength="10"> <input name="knap" type="submit" value="test"> </form> <% else cpr = Request.Form("cprnr") 'Testprogram if (cprOk(cpr)) then response.write("Gyldigt") else response.write("IKKE Gyldigt") end if end if 'Rutinen der tjekker om CPR nummeret er gyldigt. function cprOK(cpr) if len(cpr) = 10 then if IsNumeric(cpr) = true then a = mid(cpr, 1, 1) b = mid(cpr, 2, 1) c = mid(cpr, 3, 1) d = mid(cpr, 4, 1) e = mid(cpr, 5, 1) f = mid(cpr, 6, 1) g = mid(cpr, 7, 1) h = mid(cpr, 8, 1) i = mid(cpr, 9, 1) j = mid(cpr, 10, 1) if ((4*a + 3*b + 2*c + 7*d + 6*e + 5*f + 4*g + 3*h + 2*i + j) mod 11 = 0) then cprOK = true else cprOK = false end if end if else cprOK = false end if end function %>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.