Avatar billede flashnoob Nybegynder
09. januar 2006 - 21:28 Der er 18 kommentarer og
1 løsning

Kontrollere brugernavn med preg_match

Hej
Hvordan kan jeg kontrollere et indtastet brugernavn så folk ikke bruger nasty-ord. Jeg fundet ud af at jeg kan gøre sådan her:

if (preg_match ("/(nasty1|nasty2)$/i", $_POST['uname'])) { die('Ugyldigt brugernavn'); }

Men den kode kommer kun med en fejl hvis navnet er lige præcis det angivne ord. Hvordan kan jeg chekke både start og slut af ordet og evt. midt i ordet, hvis det kan lade sig gøre??
Avatar billede jaw Nybegynder
09. januar 2006 - 21:29 #1
Du kan fjerne $-tegnet, der betyder at strengen skal slutte med det ord for at den er true.
Avatar billede jaw Nybegynder
09. januar 2006 - 21:30 #2
Men måske en form for løkke og strpos() ville være bedre performancemæssigt...
Avatar billede flashnoob Nybegynder
09. januar 2006 - 21:33 #3
Okay, findes der en komplet liste over hvad alle de tegn ($ / \ osv.) betyder i sådan nogen sætninger.
Avatar billede flashnoob Nybegynder
09. januar 2006 - 21:36 #4
Med hensyn til en løkke, vil du så chekke om nasty1, så nasty2 ... osv indgår i brugernavnet eller hvordan?
Avatar billede jaw Nybegynder
09. januar 2006 - 21:38 #5
Under normale omstændigheder ville jeg, da regulære udtryk er lidt ressourcekrævende. Men omvendt, så kører du det hele i et udtryk, og derfor er jeg lidt i tvivl om hvordan det forholder sig.

Mht. en liste så kan du sagtens finde en, især hvis du søger på "regular expressions" i f.eks. Google.
Avatar billede coderdk Praktikant
09. januar 2006 - 21:46 #6
if (preg_match ("/(nasty1|nasty2)/i", $_POST['uname'])) { die('Ugyldigt brugernavn'); }
Avatar billede coderdk Praktikant
09. januar 2006 - 21:47 #7
(har blot fjernet $ i slutningen, der gjorde at den kun checkede slutningen)
Avatar billede coderdk Praktikant
09. januar 2006 - 21:47 #8
heheh jeg tror jeg mangler søvn, det er jo lige det som jaw har skrevet ;-)
Avatar billede flashnoob Nybegynder
09. januar 2006 - 21:49 #9
Okay, det med $-tegnet virker, så det er fint :) Kan du fortælle mig hvordan man kan få check af mellemrum med i dén der sætning?
Avatar billede coderdk Praktikant
09. januar 2006 - 21:51 #10
(nasty1|nasty2| )
Avatar billede flashnoob Nybegynder
09. januar 2006 - 21:51 #11
Hvis andre falder over dette spørgsmål i deres søgning efter Regular Expressions kan de findes her: http://dk2.php.net/manual/da/reference.pcre.pattern.syntax.php :)
Avatar billede jaw Nybegynder
09. januar 2006 - 21:52 #12
Hehe Coder, den har jeg skam også lavet mange gange - eller svaret på det modsatte end der blev spurgt om :)
Avatar billede flashnoob Nybegynder
09. januar 2006 - 21:52 #13
Nåårh ja!.. tak coderdk 8-)
Avatar billede coderdk Praktikant
09. januar 2006 - 21:55 #14
jaw, heheh nogle gange ville jeg ønske at man kunne slette eller rette sine beskeder op til 2 minutter efter man har submittet. Gad vide hvorfor man ikke gør det, det er jo ikke specielt svært ;P
Avatar billede jaw Nybegynder
09. januar 2006 - 21:57 #15
Ja, den feature mangler man ofte. Også når man må paste den samme kode 3-4 gange fordi man lige mangler et $-tegn eller lign. Men mener at have læst, at de ikke vil lave den, fordi så ændrer folk bare og vil påstå det ikke er rigtige løsninger eller noget i den dur...
Avatar billede flashnoob Nybegynder
09. januar 2006 - 21:58 #16
Well.. tak for hjælpen begge to. Hvis I lige svarer så skal I få point. :)
Avatar billede jaw Nybegynder
09. januar 2006 - 22:01 #17
Selv tak da :)
Avatar billede coderdk Praktikant
09. januar 2006 - 22:08 #18
Nej tak, jaw fortjener dem.

jaw, Det kommer man vel udenom hvis man kun kan ændre sin post i 120 sekunder :) Det fungerer andre steder ;) Og så har vi jo co-admins :-D
Avatar billede jaw Nybegynder
09. januar 2006 - 22:19 #19
Det var ikke et udtryk for egen holdning :) Men jeg mener det var oppe for et års tid siden, hvor det var argumentet. Jeg er enig med dig, og det ville fjerne mange "spams", som ingen alligevel læser fordi de kun er interesserede i den endelige fungerende løsning...

Og tak da :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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