Entwickler-Ecke
Internet / Netzwerk - Absolute von Relativen Web-Pfaden unterscheiden
ene - Di 17.07.07 10:10
Moin,
./images/bild.png gibt es zB auch noch. Einzige Lösung, die mir auf die Schnelle einfällt ist die Suche nach der Domain.
Also wenn .de/.com etc im Namen vorhanden, dann sollte es sich um absolute Pfade handeln.
F34r0fTh3D4rk - Di 17.07.07 10:15
aber es gibt net nur .de und .com ;) und wer sagt mir, dass es nicht eine datei mit der endung .com gibt ;)
würde es sowas wie unterordner nicht geben könnte prüfen ob extractfilename(string) = string. dann wäre es ein relativer pfad.
wobei extractfilename gerade bei webpfaden nicht zuverlässig ist (gerade wegen .com etc. (wenns am ende steht)) gibt es dazu vielleicht auch eine alternative ? Ich sehe da auf Anhieb keine Lösung ;)
Ich könnte allerdings den Link an die url der seite anhängen auf der er steht und die dateigröße prüfen. ist diese 0, so existiert die datei nicht. allerdings sagt das 1. wenig über den pfad aus und 2. lässt sich die dateigröße nicht immer abfragen :(
mfg
ene - Di 17.07.07 10:31
Sorry, aber den Post verstehe ich gerade nicht.
Eine andere auch unzuverlässige Methode ist die Suche nach Punkten. Wenn nur 1 Punkt da ist, ist er relativ, sind mehrere da, musst du schauen, ob die Punkte ganz am Anfang stehen. Ich weiß grad nicht, ob auch so etwas geht .images/bild.jpg. Aber alle Domains brauchen den Punkt davor und ob das nun .de oder .de.vu ist, ist egal, denn es wäre nicht nur Punkte.
Narses - Di 17.07.07 10:36
Moin!
Ich würde sagen, das geht: :idea:
Slash im URL? Punkt vor dem ersten Slash? absolut : relativ : relativ
;)
cu
Narses
F34r0fTh3D4rk - Di 17.07.07 10:36
ich könnte auch einfach beides herunterladen lassen, was nicht geht geht nicht, ich denke mal dass idhttp keinen fehler ausspuckt wenn die datei existiert, das problem ist extractfilepath, da muss ich mir wohl was eigenes schreiben.
@Narses: was ist mit ./images/bla.jpg ? müsste ich dann prüfen wo der punkt ist.
so in etwa ?
Delphi-Quelltext
1: 2: 3: 4:
| function IsAbsolute(path: string): boolean; begin result := (pos('.', path) < pos('/', path)) and (pos('.', path) > 1); end; |
funzt leider net ;)
mfg
Narses - Di 17.07.07 10:41
Moin!
F34r0fTh3D4rk hat folgendes geschrieben: |
| was ist mit ./images/bla.jpg ? müsste ich dann prüfen wo der punkt ist. |
OK, für absolut müßte auch noch ein nicht-Punkt-Zeichen vor dem Punkt sein. ;)
cu
Narses
noidic - Di 17.07.07 10:54
Mir würd da folgendes einfallen:
DNS-Anfrage auf den String bis zum ersten /
Es gibt zwar auch Unterordner, die wie gültige Domains heissen, aber geneuer wirds wohl nicht gehen.
F34r0fTh3D4rk - Di 17.07.07 12:05
hier ist der erste versuch für ein extractfilename für webdateien:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function ExtractWebFileName(path: string): string; var i: integer; tmpstr: string; begin result := ''; if copy(path, 1, 7) = 'http://' then path := copy(path, 8, length(path) - 7); for i := length(path) downto 1 do if (path[i] = '/') then begin tmpstr := copy(path, i + 1, length(path) - i); if pos('.', tmpstr) > 0 then result := tmpstr; break; end; end; |
die isabsolute funktion hab ich noch ein wenig angepasst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| function IsAbsolute(path: string): boolean; begin if copy(path, 1, 7) = 'http://' then path := copy(path, 8, length(path) - 7); result := (pos('.', path) < pos('/', path)) and (pos('.', path) > 1); end; |
Mit den beiden Funktionen scheint das schonmal zu klappen, aber vielleicht gibt es noch was besseres ;) oder gibt es noch lücken ?
(extractfileext akzeptiert /\ etc in endungen, dabei sind die nichtmal in dateinamen erlaubt, interessant ;) )
mfg
Lannes - Di 17.07.07 14:28
Hallo,
durch die Festlegung auf 'http://' schließt Du andere Protokolle aus, z.B https://, ftp://...
Stell doch die Funktionen auf '://' um, das müsste reichen.
Außerdem ist doch, wenn '://' enthalten, imho die Bedingung für einen absoluten Pfad gegeben.
F34r0fTh3D4rk - Di 17.07.07 14:30
aber :// muss net zwingend vorkommen ;)
btw: die isabsolute tuts doch noch net :(
mfg
F34r0fTh3D4rk - Di 17.07.07 14:39
genau, was mache ich dann ? ich bin doch net der erste der sich damit rumschlagen muss oder ?
mfg
Regan - Di 17.07.07 14:48
vielleicht kannst du ja erstmal den anker entfernen. dann würde ich die get-parameter (bla.php?id=1) entfernen. Als nächstes den Dateinamen . Dann würd ich auf den unterordner überprüfen. Vllt. kannst du das ja fortsetzten.
Lannes - Di 17.07.07 14:58
Hallo,
F34r0fTh3D4rk hat folgendes geschrieben: |
| aber :// muss net zwingend vorkommen ;) |
aber wenn es vorkommt dann ist es absolut, ich würde da mit einem else-Zweig arbeiten.
F34r0fTh3D4rk - Di 17.07.07 15:04
Regan hat folgendes geschrieben: |
| vielleicht kannst du ja erstmal den anker entfernen. dann würde ich die get-parameter (bla.php?id=1) entfernen. Als nächstes den Dateinamen . Dann würd ich auf den unterordner überprüfen. Vllt. kannst du das ja fortsetzten. |
was meinst du mit anker ? und warum den dateinamen ? das mit den get parametern muss ich ohnehin.
mfg
Regan - Di 17.07.07 15:07
der anker stört denke ich. und den dateinamen brauchst du auch nicht, um zu überprüfen, um welchen web-pfad es sich handelt.
F34r0fTh3D4rk - Di 17.07.07 15:17
naja wenn der pfad bla.jpg ist und ich den dateinamen wegmache (den ich ja auch erstmal als solchen identifizieren muss), ist nicht mehr viel über ;)
mfg
Regan - Di 17.07.07 15:24
dann weißt du aber immerhin, dass es sich um einen relativen pfad handelt. :P
F34r0fTh3D4rk - Di 17.07.07 15:28
ich hab ja einige ansätze, aber das will auch erstmal umgesetzt werden und solange das nichts halbes und nicht ganzes ist... ;) mein bisheriger code funzt ja nicht einmal ;)
mfg
GTA-Place - Di 17.07.07 16:13
Die hier markierten Pfade sind
keine absoluten Pfade:
F34r0fTh3D4rk hat folgendes geschrieben: |
Absolute Pfade:
[highlight]EINE_-_SEITE.de/bla.jpg
EINE_-_SEITE.de/images/bla.jpg
www.EINE_-_SEITE.de/bla.jpg
www.EINE_-_SEITE.de/images/bla.jpg[/highlight]
http://EINE_-_SEITE.de/bla.jpg
http://EINE_-_SEITE.de/images/bla.jpg
http://www.EINE_-_SEITE.de/bla.jpg
http://www.EINE_-_SEITE.de/images/bla.jpg |
Der Server setzt ein
Protokoll:// vorraus. Ist ihm das Protokoll unbekannt, setzt er noch ein
file:// davor. Wenn es dir nur um HTTP-Links geht, reicht ein Prüfung, ob
http:// vorhanden ist ;-).
F34r0fTh3D4rk - Di 17.07.07 16:29
öhhhhhhm ja ;)
danke, damit haben sich gerade alle probleme verflüchtigt ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!