Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Slettet bruger
12. april 2010 - 16:47#1
Mønster: [0-9a-Z\-_\.]+@[0-9a-Z]+\.[a-Z]{2,}
Forklaring: [0-9a-Z\-_\.]+ 0-9, a-Z, "-", "_" og "." tillades FØR @-tegnet og der skal mindst være ét af de tilladte tegn.
[0-9a-Z]+ 0-9 og a-Z tillades EFTER @-tegnet og der skal mindst være ét af de tilladte tegn.
[a-Z]{2,} a-Z tillades EFTER det sidste punktum og der skal mindst være 2 af de tilladte tegn (dk, com, org, osv.)
Eksempel: igor56@mydomain.com - OK igor56@mydomain.c - IKKE OK, der SKAL være 2 bogstaver efter punktummet.
Desuden vil æ, ø og å ikke godkendes af ovenstående mønster.
Synes godt om
Slettet bruger
12. april 2010 - 16:52#2
Det kan også ændres så du tillader æ, ø og å, eller du kan angive præcis hvilke domain-typer (dk, com, osv.) der må tillades. Et eksempel kunne være følgende mønster: [0-9a-ZæøåÆØÅ\-_\.]+@[0-9a-ZæøåÆØÅ]+\.(?:dk|com|org)
Eksempler: igør56@mydomain.dk - OK igør56@my-domain.dk - IKKE OK, bindestreger i domænenavnet er ikke tilladt! igør56@mydomain.dkk - IKKE OK, kun dk, com og org er tilladt!
I mit spørgsmål beder jeg om forklaring på hvad der accepteres og hvad der ikke accepteres. Det er jo bl.a. det som jeg vil give point for. Derfor spørger jeg om bindestreg og om punktum, fordi du ikke selv har skrevet det.
Synes godt om
Slettet bruger
12. april 2010 - 18:23#8
Quote fra første post
[0-9a-Z]+ 0-9 og a-Z tillades EFTER @-tegnet og der skal mindst være ét af de tilladte tegn.
Quote fra anden post:
igør56@my-domain.dk - IKKE OK, bindestreger i domænenavnet er ikke tilladt!
Syntes selv jeg har forklaret mig, men det er jo ikke til at vide hvad du vil have når du kommer med så lidt info som du gør. Du skal være glad for jeg overhovedet gad komme med et mønster og en forklaring dertil. Normalt ville jeg og mange andre herinde på Eksperten ignorerer din post eller fortælle dig at du må komme med den kode, som du ikke har kunne få til at virke.
Så jeg siger igen, brug det mønster jeg er kommet med og ændrer det selv efter behov, eller kom med noget kode som vi kan arbejde med.
roxki jeg siger tak for din hjælp. Men fortæl ikke mig hvad andre på eksperten normalt gør. Jeg har trods alt været bruger her 4 år mere end du har :) Og det du fortæller er ikke korrekt. De ville ikke ignorere mit indlæg, de ville spørge "Har du noget kode at arbejde videre med?"
Og så ville jeg svare:
"Nej, jeg har ikke noget kode."
Og det er også svaret til dig, hvis du havde spurgt efter det. Men du sprang direkte videre til svineren.
Det er et spørgsmål til 100 point, hvilket fortæller lidt om hvor "nemt" spørgsmålet er at hjælpe med. Så må du da også forvente at at få uddybende spørgsmål. Specielt når du glemmer at svare på det jeg spørger om. Det med bindestregen havde jeg overset, men det med punktummet mener jeg ikke jeg har overset. Desuden kommer PHP med en fejl ved begge dine forslag. Så jeg kan ikke teste på det.
Jeg kan kun gætte på du har en dårlig dag. Det er i hvert sjældent jeg oplever brugere der springer direkte videre til svineren.
Tak for din hjælp. Lad nu andre komme til.
Synes godt om
Slettet bruger
12. april 2010 - 18:46#10
Det var nu ikke en sviner, men det er jo som man tager det :-) Og igen, du siger der er fejl, men uden kode kan jeg desværre ikke komme med nogle bud på hvorfor der opstår fejl.
htx98i17: Som den "gamle erfarne rotte", du er her på Eksperten, bør du vide, at man ikke bare skriver "Desuden kommer PHP med en fejl ved begge dine forslag." Så er det vel på sin plads, at du viser koden og beskriver fejlen, hvis du ønsker hjælp til dette (men det gør du måske ikke). Og det er sikkert mig, der forkert på den, da du har været her på sitet 8 år mere end jeg. Roxki's indlæg kan jeg ikke se er nogen "sviner". Det synes jeg er en ret hård "dom" til en venlig sjæl, der trods alt bruger tid på at hjælpe dig. Du burde efter min opfattelse være lidt mere ydmyg.
roxki -> Jeg kommer gerne med fejlbeskrivelsen, men jeg skal jo først lige opdage den før det er muligt. Du var kommet med "svineren" inden jeg overhovedet havde testet koden. Og det var jo heller ikke fejlkoden du beklagede dig over ikke at have fået, da jeg ikke havde nævnt noget om at din kode ikke virkede på det tidspunkt, men en kode som jeg angiveligt selv burdehave startet ud med og det er jo det jeg siger at jeg ikke har.
I dette spørgsmål er jeg ikke selv startet med at prøve noget, som jeg normalt gør. Og det skal der være plads til. Hvis du ikke kan klare brugere som tillader sig det indimellem, så kan du vælge ikke at svare. Det gjorde du så alligevel og jeg kan se du har brugt tid på det. Tak for det. Men jeg må have lov at spørge uddybende ind til det du skriver. Det mener jeg at jeg har sat point af til at kunne tillade mig. Derfor skriver jeg til dig hvad opgaven/spørgsmålet går ud på, for at være sikker på at du har forstået det korrekt og ikke forventer at få 100 point fordi du tror du har besvaret spørgsmålet tilfredsstillende.
Men Roxki. Jeg vil som jeg skriver gerne give point til dem som besvarer mit spørgsmål. Som sagt, så havde jeg overset det med bindestreg. Men hvad med punktummet? Hvis jeg selv kunne se om der var taget højde for det, så ville jeg jo ikke spørge. Her på eksperten er det at man må spørge, og dem som vil svare for de point der er udlovet, kan vælge at hjælpe.
Fejlkoden er her: Warning: preg_match() [function.preg-match]: Unknown modifier '+' in...
Og linjen ser således ud: if(!preg_match('[0-9a-ZæøåÆØÅ\-_\.]+@[0-9a-ZæøåÆØÅ]+\.(?:dk|com|org)',$_POST['emailadresse'])) $arr_validering['emailadresse'] = 1;
Synes godt om
Slettet bruger
12. april 2010 - 21:45#14
Den fejlkode ud får er pga. du ikke har indsat delimiter-tegnene der skal stå rundt om regex mønstret. Du vælger selv hvilket tegn du vil bruge som delimiter tegn rundt om mønstret, men jeg vil råde dig til at bruge et tegn som ikke bliver brugt inde i mønstret som f.eks. "#" Du angiver delimiter tegnene på følgende måde: preg_match("#mønster-her#"); Og nej der bliver ikke tjekket for punktummer i domænenavnet, så "subdomain.mydomain.dk" vil ikke blive godkendt af ovenstående mønster. Hvis du vil have at man skal have lov til at bruge punktummer i domænenavnet så skal du ændre delen efter @-tegnet til følgende: [0-9a-ZæøåÆØÅ\.]+
Håber jeg fik svaret på alle dine spørgsmål denne gang :-)
Jeg troede det var @'et der var problemet da offset svarede til @'et.
Men nu prøvede jeg at lave den således: #^[^\w\d\-_\.æøåÆØÅ]@^[^\w\dæøåÆØÅ\.\-_]#
og der kommer ingen fejl. Derimod lader den IKKE til at fungere som den skal :)
Jeg er i tvivl om jeg skal [^ altså finde alt der IKKE er tilladte tegn, eller om jeg skal finde tilladte tegn.
Synes godt om
Slettet bruger
12. april 2010 - 22:20#17
Du har lavet nogle ændringer i mønstret som er ret væsentlige for hvordan det kommer til at virke. Jeg vil gennemgå mønstret fra start til slut.
# = delimiter start ^ = mønster start [^\w\d\-_\.æøåÆØÅ] = match alt der IKKE er "word char", "decimal digit", -, _, ., æøå eller ÆØÅ - fjerner du derimod "^"-tegnet i starten af din bracket "[^" så vil den matche alt det jeg lige har opremset. Derudover har du flyttet rundt på "@" og "+" hvilket sagtens kan være grund for den fejl du får. "+"-tegnet betød at der skal mindst være 1 eller flere af de førnævnte tegn, hvorimod "@"-tegnet bare betyder der skal være et "@". ^ = Da det står udenfor brackets betyder det at det matcher starten af en linje, så derfor kan vi godt fjerne det tegn. [^\w\dæøåÆØÅ\.\-_] = samme gælder for denne del, som den anden del i brackets, fjern "^"-tegnet og det vil få den ønskede virkning. \. = matcher et punktum [a-Z]{2,} = matcher a-z & A-Z med mindst. 2 tegn, dvs. "dk" og "com" er godtaget, men et enkelt bogstav såsom "k" ville ikke godtages. $ = slutning på dit mønster # = slutning på delimiter
Det var gennemgangen, her får du en modificeret udgave af det mønster du kom med: #^[\w\d\-_\.æøåÆØÅ]+@[\w\dæøåÆØÅ\.\-_]\.[a-Z]{2,}$#
Håber det gav mening, da det hurtigt kan komme til at lige noget være rod.
Jep jeg forstår din forklaring og hvordan der er system i rodet.
Den modificerede kommer desværre stadig med fejl: Compilation failed: range out of order in character class at offset 42
Jeg har tilføjet et +, er det ikke korrekt? #^[\w\d\-_\.æøåÆØÅ]+@[\w\dæøåÆØÅ\.\-_]+\.[a-Z]{2,}$#
Men det løser dog desværre ikke fejlen... :(
Synes godt om
Slettet bruger
12. april 2010 - 22:45#19
Det "+" du tilføjede var korrekt ja. Prøv og ændre [a-Z] til [a-zA-Z], det er den del som er "offset 42". Men vil ikke love det er der fejlen ligger, dog det eneste jeg lige kan få øje på pt.
hvad med at teste filter_var('test@example.com', FILTER_VALIDATE_EMAIL);
Synes godt om
Ny brugerNybegynder
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.