Avatar billede donkazz Nybegynder
09. januar 2006 - 14:21 Der er 9 kommentarer og
1 løsning

Password validering vha. javascript eller andet

Jeg har en formular hvor folk skal taste deres oplysninger ind og samtidigt vælge et password der skal bestå af PRÆCIS 6 alm. bogstaver og PRÆCIS 2 tal. Der er ingen regel for om de skal komme i rækkefølge eller ej, password-strengen skal bare minimum indholde de krævede tegn..

Hvordan validerer jeg det nemmest? Javascript? Og hvordan? Hvilken reg.exp skal jeg bruge? Hvis det overhovedet er en reg.exp jeg skal bruge?

Mvh.
Kasper
Avatar billede soreno Praktikant
09. januar 2006 - 14:30 #1
Pseudo kode:

Lav 2 tæller variabler (chars = 0, nums = 0)
Løb passwordstrengen igennem tegn for tegn
  hvis alm. bogstav -> chars = chars + 1
  ellers hvis tal -> nums = nums + 1
  ellers rapporter fejl

hvis chars == 6 og nums = 2
  -> syntaktisk korrekt password
ellers
  -> rapporter fejl
Avatar billede soreno Praktikant
09. januar 2006 - 14:31 #2
Det virker lidt overkill at konstruere et regulært udtryk til dette.
Er der noget der er svært med regulære udtryk så er det at tælle..
Avatar billede erikjacobsen Ekspert
09. januar 2006 - 14:35 #3
Når reglen er så simpel kan du vel godt. Men du skal tælle længden separat:

  a="asd2asa5";

  if (a.match(/^[a-z]*[0-9][a-z]*[0-9][a-z]*$/) && a.length==8)  {
    alert("ok");
  } else {
    alert("fejl");
  }
Avatar billede donkazz Nybegynder
09. januar 2006 - 14:51 #4
Oh my God jeg forstår slet ikke hvad I siger... Kan I evt. skære det ud i pap for et paphoved her? :) På forhånd tak..
Avatar billede soreno Praktikant
09. januar 2006 - 15:15 #5
Der er foreslået 2 muligheder.

Den ene gør brug af et regulært udtryk til at teste om passwordet består af tal og bogstaver. Kombineret med test på længden af passwordet vil det validere passwordet i forhold til de krav du har.

Den anden gør brug af to variabler til at tælle hver type tegn og derefter teste om summe af variablerne er 8.

Lidt mere kodenært eksempel på tæller eksemplet.

a = "asd2asa5"
chars = 0;
nums = 0;
for(i = 0; i<a.length; i++) {
  if (a.charAt(i).match([a-zA-Z]) {
    chars = chars + 1;
  } else if (a.charAt(i).match([0-9]) {
    nums = nums + 1;
  } else {
    alert("fejl i passwordet");
  }
}

if(chars == 6 && nums == 2) {
  alert("ok");
} else {
  alert("fejl i passwordet");
}

(Jeg er ikke til JavaScript - så det er bare et gæt på hvordan det næsten skal se ud, med mit ringe kendskab til JS)
Avatar billede donkazz Nybegynder
09. januar 2006 - 15:45 #6
Okay.. det ser jo fornuftigt ud...

Det du har skrevet er ikke et sprog eller hvordan? bare et gæt på hvordan det burde se ud eller hvorn? Jeg skal jo lige hitte ud af hvordan jeg bruger det i praksis.. :)
Avatar billede roenving Novice
10. januar 2006 - 16:42 #7
Eller f.eks.

pass = theForm.password.value;
if(pass.match(/\d/).length != 2 || pass.match(/[a-zæøå]/i).length != 6 || pass.length != 8){
  alert("Et password skal bestå af præcis 2 cifre og 6 bogstaver !-)");
  return false;
}
Avatar billede donkazz Nybegynder
12. oktober 2007 - 11:37 #8
svarer du roenving? så får du svar. :)
Avatar billede roenving Novice
14. oktober 2007 - 01:11 #9
Oki '-)
Avatar billede roenving Novice
21. oktober 2007 - 05:10 #10
-- og tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester