/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Valider link
Fra : Anders


Dato : 03-08-05 11:45

Jeg er lidt ny indenfor det her asp og kunne godt tænke mig at få lidt orden
på nogen links i en database og få slettet de links der er der flere gangne,
men som er skevet på forskellige måder. For eksempel er følgende links til
samme side:

http://www.minside.dk/home/images/../image1.gif
http://www.minside.dk/home/image1.gif
http://www.minside.dk/home//image1.gif
http://www.minside.dk/home/include/../images/..//image1.gif

Det vil sige at dobbelt // skal slettes og det skal være den direkte sti til
filen uden brug af ../

Hvordan kan man gøre det med at få fjernet ../ på den rigtige måde?

Tak.

Mvh. Anders Jensen



 
 
Anders (03-08-2005)
Kommentar
Fra : Anders


Dato : 03-08-05 14:11

> Jeg er lidt ny indenfor det her asp og kunne godt tænke mig at få lidt
orden
> på nogen links i en database og få slettet de links der er der flere
gangne,
> men som er skevet på forskellige måder. For eksempel er følgende links til
> samme side:
>
> http://www.minside.dk/home/images/../image1.gif
> http://www.minside.dk/home/image1.gif
> http://www.minside.dk/home//image1.gif
> http://www.minside.dk/home/include/../images/..//image1.gif
>
> Det vil sige at dobbelt // skal slettes og det skal være den direkte sti
til
> filen uden brug af ../
>
> Hvordan kan man gøre det med at få fjernet ../ på den rigtige måde?

Jeg har fået lavet følgende, I må meget gerne teste om det virker:

Function ValidateLink(strlink)
'13:20 03-08-2005
'NB. strlink ændres
tmplink = strlink
if Instr(tmplink,"//") > 0 or Instr(tmplink,"/..") > 0 then
if left(lcase(tmplink),7) = "http://" then tmplink = mid(tmplink,8)
'der er ikke taget højde for at der kan bruges // efter ? i url

tmplink = mid(replace(" "&tmplink,"\","/"),2)

While Instr(tmplink,"//") > 0
tmplink = mid(replace(" "&tmplink,"//","/"),2)
Wend

domainname = left(tmplink,Instr(tmplink&"/","/")-1)
tmplink = mid(tmplink,Instr(tmplink,"/")+1)

While Instr(tmplink,"/..") > 0 and Instr(tmplink,"/..") >
Instr(tmplink,"?")
tmplink_start = left(tmplink,Instr(tmplink,"/..")-1)
if left(tmplink_start,1) <> "/" then tmplink_start = "/" & tmplink_start
if Instr(tmplink_start,"/") > 0 then tmplink_start =
left(tmplink_start,InstrRev(tmplink_start,"/")-1)
tmplink_slut = mid(tmplink,Instr(tmplink,"/..")+3)
if left(tmplink_slut,1) <> "/" then tmplink_slut = "/" & tmplink_slut
tmplink = tmplink_start & tmplink_slut
Wend

tmplink = mid(replace(" "&tmplink,"/.",""),2)

if left(tmplink,1) <> "/" then tmplink = "/" & tmplink

tmplink = "http://" & domainname & tmplink
end if
strlink = tmplink
ValidateLink = tmplink
End Function

Mvh. Anders Jensen



Anders (06-08-2005)
Kommentar
Fra : Anders


Dato : 06-08-05 10:09

> > Jeg er lidt ny indenfor det her asp og kunne godt tænke mig at få lidt
> > orden på nogen links i en database og få slettet de links der er der
> > flere gangne, men som er skevet på forskellige måder. For eksempel
> > er følgende links til samme side:
> >
> > http://www.minside.dk/home/images/../image1.gif
> > http://www.minside.dk/home/image1.gif
> > http://www.minside.dk/home//image1.gif
> > http://www.minside.dk/home/include/../images/..//image1.gif
> >
> > Det vil sige at dobbelt // skal slettes og det skal være den direkte sti
> til
> > filen uden brug af ../
> >
> > Hvordan kan man gøre det med at få fjernet ../ på den rigtige måde?

Jeg har opdateret den en anelse:

Function ValidateLink(strlink)
'13:20 03-08-2005 -> 15:21 04-08-2005
'NB. strlink ændres
'denne funktion virker kun med links der starter med http:// og er angivet
med domainnavn og evt. underside
'For at spare plads i databasen forkortes linkene til maks 255 tegn
tmplink = left(strlink,255)
if Instr(tmplink,"//") > 0 or Instr(tmplink,"/..") > 0 then
if left(lcase(tmplink),7) = "http://" then tmplink = mid(tmplink,8)
'der er nu rettet så der er taget højde for at der kan bruges // efter ? i
url, der ændres ikke i det der står efter ? i linket

tmplink_split2 = ""
if Instr(tmplink,"?") > 0 then
tmplink_split2 = mid(tmplink,Instr(tmplink,"?"))
tmplink = left(tmplink,Instr(tmplink&"?","?")-1)
end if

tmplink = mid(replace(" "&tmplink,"\","/"),2)

While Instr(tmplink,"//") > 0
tmplink = mid(replace(" "&tmplink,"//","/"),2)
Wend

domainname = left(tmplink,Instr(tmplink&"/","/")-1)
tmplink = mid(tmplink,Instr(tmplink,"/")+1)

While Instr(tmplink,"/..") > 0 and Instr(tmplink,"/..") >
Instr(tmplink,"?")
tmplink_start = left(tmplink,Instr(tmplink,"/..")-1)
if left(tmplink_start,1) <> "/" then tmplink_start = "/" & tmplink_start
if Instr(tmplink_start,"/") > 0 then tmplink_start =
left(tmplink_start,InstrRev(tmplink_start,"/")-1)
tmplink_slut = mid(tmplink,Instr(tmplink,"/..")+3)
if left(tmplink_slut,1) <> "/" then tmplink_slut = "/" & tmplink_slut
tmplink = tmplink_start & tmplink_slut
Wend

tmplink = mid(replace(" "&tmplink,"/.",""),2)

if left(tmplink,1) <> "/" then tmplink = "/" & tmplink

tmplink = "http://" & domainname & tmplink & tmplink_split2
end if
strlink = tmplink
ValidateLink = tmplink
End Function

Mvh. Anders Jensen




Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste