Avatar billede kpdk Nybegynder
10. januar 2009 - 17:02 Der er 4 kommentarer og
1 løsning

Password validering

Hej,

Jeg er igang med et mindre projekt som bl.a. skal give brugerne den mulighed, at skifte deres password. Dog har jeg fastsat nogle regler som jeg gerne vil have kontrolleret, er overholdt. Jeg har lagt hovedet lidt i blød men har måttet sande at jeg ikke ved nok om RegExp's for at kunne løse dette.

Ud fra en given tekststreng skal den validere følgende:

1. Kodeordet skal min. være 8 karakterer langt og max 32 karakterer langt.
2. Kodeordet skal starte og slutte med bogstaver. Mindst et af disse bogstaver skal være med stort.
3. Kodeordet skal indeholde mindst ét tal (flere er også fint), dette skal naturligvis være imellem bogstaverne jvf (2).

Eksempler på forkerte og korrekte kodeord:

Tests123a <- gyldigt
hEj20081b <- gyldigt
daV123hej <- gyldigt
Hej123456 <- ikke gyldigt, ikke afsluttet med bogstav
123hEj123 <- ikke gyldigt, skal starte og slutte med bogstaver
hej12345c <- ikke gyldigt, ingen store bogstaver
HEJ12345C <- ikke gyldigt, ingen små bogstaver

Jeg håber, at I har nogle gode forslag :)
Avatar billede jensgram Nybegynder
11. januar 2009 - 09:36 #1
*Skal* det være i én reg.exp.? Hvis ikke, ville jeg validere strukturen med en expression, men store/små bogstaver efterfølgende:

* match /^[a-zA-Z](?=\d)[a-zA-Z\d]{6,30}[a-zA-Z]$/
* pw != strtoupper(pw) && pw != strtolower(pw)

Når begge betingelser er opfyldt, skulle det gerne stemme med dine krav. (Utestet.)
Avatar billede kpdk Nybegynder
12. januar 2009 - 02:29 #2
Hej Jens,
Vi kan sagtens ekskludere valideringen af store og små bogstaver :)

Jeg har testet udtrykket men jeg kan ikke få det til at virke, jeg har testet det ved at bygge en lille klasse og kalde funktionen;


public function check_password($password) {
    if(preg_match("/^[a-zA-Z](?=\d)[a-zA-Z\d]{6,30}[a-zA-Z]$/", $password)) {
        return true;
    } else {
        return false;
    }
}

Denne returnerer false på alle disse (hvor nogle af dem burde returnere true):

abc1234fd
Abc1234fd
abc1234Fd
123AbC123
abcABC123
abcAbc
Avatar billede jensgram Nybegynder
12. januar 2009 - 07:31 #3
Den er ikke pæn, men

/^[a-zA-Z](?=[a-zA-Z]*\d)[a-zA-Z\d]{6,30}[a-zA-Z]$/

virker
Avatar billede kpdk Nybegynder
12. januar 2009 - 23:05 #4
Ja, den virker fint. Pyt med, at den måske ikke er den pæneste regexp i verden (det kan jeg ikke udtale mig om) men sagen er, at den virker og gør præcis dét, den skal :)

Smid et svar, Jens, og rigtig mange tak for din hjælp.
Avatar billede jensgram Nybegynder
12. januar 2009 - 23:07 #5
Så lidt.
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