Avatar billede Slettet bruger
12. august 2006 - 15:16 Der er 11 kommentarer og
1 løsning

Validering af brugerens indtastede URL

Jeg har et form-felt hvor brugeren kan indtaste sin hjemmesideadresse.

Når valideringen starter, er det første jeg gør, at fjerne "http://", såfremt dette er indtastet.

Hvordan kontrollerer jeg at url'en er gyldig.

Jeg er ikke på udkig efter et stort avanceret script, der bruger fsock, eller noget i den retning.

Vil gerne bare undgå at brugeren kan lave et mellemrum, eller nogle tilfælde bogstaver eller tal.

Java-script løsninger er heller ikke ønsket.
Avatar billede jakobdo Ekspert
12. august 2006 - 16:33 #1
Du skal have fat i et regulært udtryk.
Så skal du sikre at det indtastede kun indeholder visse tegn.
Hvad vil du mene er en gyldigt URL? (tegn, tal, /, _ og - eller flere)
Avatar billede Slettet bruger
12. august 2006 - 17:53 #2
Bogstaver
tal
/
_ og -
~
&
?
#
%
=
Avatar billede jakobdo Ekspert
12. august 2006 - 18:02 #3
if (preg_match('/[a-z\\d\\~\\&\\?\\#\\%\\=\\_\\-]+/', $link))
{
echo "Det er et ok link";
}

PS: Jeg ved ikke om alle tegn skal escapes! Men har gjort det for en sikkerheds skyld.
Avatar billede Slettet bruger
12. august 2006 - 19:00 #4
Umiddelbart er det en ok løsning. Dog vil folk stadigvæk kunne lave nogle tilfældige bogstaver eller tal.

Kan du lave således at den også checker for f.eks. at linket indeholder .?? (altså f.eks. .dk eller .com eller .se osv.)?
Avatar billede jakobdo Ekspert
12. august 2006 - 20:43 #5
Det kunne man godt lave ja!
Men et link kan jo være: www.a.dk eller www.abe.dk/mere/noget.html
Avatar billede Slettet bruger
12. august 2006 - 21:26 #6
Ja, men fælles for de 2 link, er at de indeholder .dk

Uanset hvordan og hvorledes et link er strikket sammen, vil der jo altid være x.xx eller x.xxx
Avatar billede jakobdo Ekspert
12. august 2006 - 22:10 #7
Måske sådan:
if (preg_match('/[\\w\\\/\\_\\-\\~\\&\\?\\#\\%\\=]+\\.\\w{2,4}.*/', $tekst))
Så kan det være: .dk, .info eller lign.
Dog vil den også acceptere: .nope
Avatar billede Slettet bruger
12. august 2006 - 22:18 #8
Får fejl på dit nyeste forslag:
Warning: preg_match(): Unknown modifier '\' in xxx.php on line 144
Avatar billede jakobdo Ekspert
12. august 2006 - 22:26 #9
Jeg har nu fjernet alle \ og det blev så: if(preg_match('/[\\w\/_-~&?#%=]+\\.\\w{2,4}.*/i', $link))
Den virker hos mig.
Avatar billede Slettet bruger
12. august 2006 - 22:28 #10
Ser ud til det fungerer som ønsket.

Læg et svar og der er point på vej :o)
Avatar billede jakobdo Ekspert
12. august 2006 - 22:45 #11
Svar!
Avatar billede jakobdo Ekspert
13. august 2006 - 10:29 #12
Takker for point.
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