06. januar 2007 - 14:30
Der er
33 kommentarer og 2 løsninger
Password validering
Hej Jeg skal bruge en reg.exp til at kontrollere password. Programmeringssprog PHP. Password skal: 1. være på MINDST 8 tegn. 2. indeholde BÅDE tal og bogstaver (a-z) 3. indeholde BÅDE store og små bogstaver. Er der nogen der kan hjælpe?
Annonceindlæg fra Infor
06. januar 2007 - 14:43
#1
^[a-zA-Z0-9]{8,8}$ det tætteste.. og det sidse 9 tal er maks længde
06. januar 2007 - 14:55
#2
Desværre... den slipper passwords igennem som enten består af.. kun små bogstaver kun store bogstaver kun tal Det SKAL være en blanding af alle tre!
06. januar 2007 - 14:58
#3
Hvis ellers jeg har gjort det korrekt, selvfølgelig? :o) Nedenstående viser "Korrekt", selvom der kun er små bogstaver. $pw = "abcdefghi"; $pattern = "^[a-zA-Z0-9]{8,16}$"; if (eregi($pattern,$pw)) { echo "Korrekt"; } else { echo "Forkert"; }
06. januar 2007 - 15:03
#4
ja det her burde vel tage højde for at der er både tal og bogstaver $pw = "abcdefghi"; $pattern = "/([a-zA-Z])/"; $pattern2 = "/([0-9])/)"; if (eregi($pattern,$pw) && eregi($pattern2,$pw)) { echo "Korrekt"; } else { echo "Forkert"; } hvis det virker kan du vel lave det sidste tjek på længden.
06. januar 2007 - 15:10
#5
"^(?=.*\d).{8,}$" gør vidst det samme.. men der tages bare ikke højde for store og små.
06. januar 2007 - 15:18
#6
Nu er jeg jo ikke ekspert i reg.exp... men siger den første ikke at det skal være små eller store bogstaver, og den anden at det skal være tal? Kombineret vil de jo aldrig blive opfyldt, eller...?
06. januar 2007 - 15:24
#7
jeg har testet denne ^(?=.*\d).{8,}$ og den virker.. prøver at gennemskue hvordan man lige tager højde for det sidste... hvis jeg kan
06. januar 2007 - 15:26
#8
måske denne;) ^(?=.*\d).{8,}.[A-Z]$
06. januar 2007 - 15:28
#9
$pw = "abcdefghi"; $pattern = "^(?=.*\d).{8,}.[A-Z]$"; if (eregi($pattern,$pw)) { echo "Korrekt"; } else { echo "Forkert"; } skulle udskrive forkert $pw = "abcdefghiDDD"; skulle udskrive forkert $pw = "a2DE"; forkert ja ser ud til at den virker:)
06. januar 2007 - 15:28
#10
Warning: eregi(): REG_BADRPT in....
06. januar 2007 - 15:32
#11
a2DE skulle give "Korrekt" jo
06. januar 2007 - 15:33
#12
Nej, sorry... skal jo være min. 8 !
06. januar 2007 - 15:33
#13
hvorfor det? du sagde mindst 8 tegn
06. januar 2007 - 15:34
#14
den virker... men php har svært ved at læse den... så der skal sikkert nogle \ ind i den men der skal du nok forsøge dig frem
06. januar 2007 - 15:35
#15
Ok, jeg prøver at lege lidt med den. Foreløbig tak.
06. januar 2007 - 15:40
#16
sorry.. sådan her så er den perfekt:) ^(?=.*\d).{8,}.([a-zA-Z0-9])$ før skulle password slutte med et stort tegn.. nu må det også slutte med et lille eller tal.
06. januar 2007 - 15:41
#17
Satte en \ foran ?, så nu får jeg ikke den WARNING, men den virker ikke... den giver "Forkert" på nedenstående! $pw = "abc123ABC"; $pattern = "^(\?=.*\d).{8,}.[A-Z]$"; if (eregi($pattern,$pw)) { echo "Korrekt"; } else { echo "Forkert"; }
06. januar 2007 - 15:43
#18
Samme resultat (igen med \ foran ?)
06. januar 2007 - 15:52
#19
^(?=.*\d).{7,}.([a-zA-Z0-9])$
06. januar 2007 - 15:57
#20
beklager.. tror vi skal helt hertil ^(?=.*\d).{6,}.([a-zA-Z0-9])$ nu håber jeg den virker.. for er opgivende;o)
06. januar 2007 - 16:03
#21
Password: abc123ABC pattern: ^(\?=.*\d).{6,}.([a-zA-Z0-9])$ Forkert Hvad med {6,}? - er det ikke min. længden? (som jo skal være 8) Hvad tester du i? for i php virker det ikke. Jeg har ingen anelse om hvad min \ foran ? afstedkommer, udover at jeg undgår den der Warning!
06. januar 2007 - 16:05
#22
^(?=.*\d).{6,}.([a-zA-Z0-9])$
virker fint..
^(\?=.*\d).{6,}.([a-zA-Z0-9])$
gør ikke.. så de må betyder at du ændre pattern i den..
test selv her
http://regexlib.com/RETester.aspx
06. januar 2007 - 16:07
#23
^(?\=.*\d).{6,}.([a-zA-Z0-9])$ ville være grimt hvis den forstår den sådan her
06. januar 2007 - 16:13
#24
Det gør den så heldigvis heller ikke :o) Prøvede at teste på dit link med denne: abc123ABC ^(?=.*\d).{6,}.([a-zA-Z0-9])$ Under results skriver den Match: abc123ABC og $1: C Jeg kan ikke udlede af det, at den virker?
06. januar 2007 - 16:14
#25
eregi('\?',^(?=.*\d).{6,}.([a-zA-Z0-9])$) kan du få dit php til at være sådan her?
06. januar 2007 - 16:17
#26
den virker vil jeg mene.. har testet med mange forskellige kombinationer nu.. men få det til at virke på din php side og test det der;) og så skulle den jo også give match ved abc123ABC så det er fint.
06. januar 2007 - 16:20
#27
Password: abc123ABC pattern: '\?',^(?=.*\d).{6,}.([a-zA-Z0-9])$ Den giver også en warning! Det link du henviser til benytter .NET Regex engine - der er nok forskel på den og PHP's !?
06. januar 2007 - 16:29
#28
jeg tror du misforstår noget;) regexp er regexp.. men selvfølgelig skal det sættes op rigtigt i det sprog man kigger på.. den her virker uanset hvor den køres ^(?=.*\d).{6,}.([a-zA-Z0-9])$ men du skal have php til at læse alle tegnene som en string og ikke funktioner.. præcis som i SQL.. hvis du vil skrive tegnet " eller ' tegnet i SQL skal du jo fortælle den at den skal læse det som en streng. I ASP.NET løser jeg problemer sådan her string regexp = @^(?=.*\d).{6,}.([a-zA-Z0-9])$ altså med et @ foran.. i PHP ved jeg ikke hvordan man gør... men det er også RegEXP katagorien vi er i:P
06. januar 2007 - 16:35
#29
i PHP skrives det som $pattern = "^(?=.*\\d).{6,}.([a-zA-Z0-9])$"; tegnet "\" escaper det efterfølgende tegn, og derfor skal tegnet selv escapes, hvis man ønsker at bruge det "normalt" ;)
06. januar 2007 - 16:39
#30
$pattern = "/(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/"; if(preg_match($pattern, $pw)){
06. januar 2007 - 16:54
#31
BINGO - der var den! plx, lægger du et svar :o)
14. januar 2007 - 12:16
#32
Nå, jeg skal jo af med de point, så hvis plx ikke vil have dem må du få dem kalp.
14. januar 2007 - 15:41
#34
Ok - så lad os slå halv skade... du gjorde et ihærdigt forsøg og jeg kan ikke afvise at du havde fat i noget. Det virkede bare ikke rigtig for mig :o) Lægger du "et halvt" svar, kalp?
14. januar 2007 - 15:53
#35
fair nok hehe:)
Kurser inden for grundlæggende programmering