Avatar billede htx98i17 Professor
14. august 2012 - 11:46 Der er 7 kommentarer og
1 løsning

Valider adgangskode

Jeg vil gerne have at adgangskode skal indeholde minimum 1 tal, 1 lille bogstav og 1 stor bogstav. Koden skal dog være mellem 6 og 10 tegn langt.

Jeg tænkte at noget ala:

#^[a-z]+[A-Z]+[0-9]+{6,10}$#u
Avatar billede DeeDawg Nybegynder
14. august 2012 - 12:47 #1
Du er nødt til at sørge for at det valideres som en helhed, og ikke hver for sig. Gør du ikke det, vil systemet slavisk tro at der først kommer 1 lille bogstav, så et 1 stort og til sidst 1 tal. Denne rækkefølge hverken bør eller kan du af gode grunde ikke bestemme.

Du kunne bruge noget i stil med følgende:

((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,10})
Avatar billede htx98i17 Professor
14. august 2012 - 14:40 #2
tak for hjælpen, godt jeg spurgte, for det havde jeg aldrig selv fundet ud af kan jeg,
Avatar billede DeeDawg Nybegynder
14. august 2012 - 21:02 #3
Så er det jo godt vi er her for at hjælpe. :)
Avatar billede htx98i17 Professor
21. august 2012 - 09:18 #4
Nu har jeg lige fået testet
Jeg vil gerne have sådan at man ikke kan indtaste andre tegn end dem angivet.

Det troede jeg dette kunne klare:

#^((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,10})$#
Avatar billede DeeDawg Nybegynder
21. august 2012 - 14:14 #5
Kan det også.

<?php
    $pw = array(
        'eksperten',
        'Eksperten',
        'Eksperten1',
        'Ekspertenpw2',
        'Exppw3',
        'Exp4'
    );
   
    foreach ($pw as $pass) {
        echo '<strong>' . $pass . '</strong> ';
       
        if (preg_match('#^((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,10})$#', $pass)) {
            echo 'is valid.<br />';
        } else {
            echo 'is not valid.<br />';
        }
    }
?>

Bliver til

eksperten is not valid.
Eksperten is not valid.
Eksperten1 is valid.
Ekspertenpw2 is not valid.
Exppw3 is valid.
Exp4 is not valid.

Problemet må ligge et andet sted. :)
Avatar billede htx98i17 Professor
21. august 2012 - 15:26 #6
hvad siger så

ekspært1

:)

eller

eksp)rt
Avatar billede DeeDawg Nybegynder
21. august 2012 - 17:08 #7
Hm, fik nok læst #4 lidt for hurtigt, beklager. Men det du efterspørger, er nu egentlig meget enkelt at opnå.

((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,10})

I denne angiver vi, at ethvert tegn kan bruges, med et punktum.

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{6,10})

I denne angiver vi, at der kun kan bruges a-z, A-Z, 0-9 og _, med \w. Det er denne metode man normalt ville bruge.

Men det må være følgende du er ude efter, da du kun vil have bogstaver og tal. ;)

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z\d]{6,10})
Avatar billede htx98i17 Professor
22. august 2012 - 17:27 #8
tak for hjælpen
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