Probleme mit LINK

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
K4L1N0
Mitglied
Beiträge: 3
Registriert: 10.06.2015 14:56

Probleme mit LINK

Beitrag von K4L1N0 »

Hallo zusammen,

derzeit stehe ich vor einem größeren Problem. Das phpBB-Forum wird in Version 3.0 RC5 im Intranet verwendet.
Jetzt stehe ich vor einem schier unlösbarem Problem.

Ich möchte auf eine Datei verweisen die folgenden Link hat:
file:\\ordner1\ordner2\ordner3\Dokumentation.pdf

Problem sind hierbei jedoch die backslashs. Dank irgendeiner störenden Filterung, werden diese Verweise leider nicht angenommen und im Klartext angezeigt. Beispiel:
[url]file:\\ordner1\ordner2\ordner3\Dokumentation.pdf[/url]
sollte aber so aussehen
http://www.google.de

Jedoch muss ich unbedingt auf unser FileSystem verweisen! Sonst muss ich die Datei mal wieder an hunderten Stellen pflegen.
Ich habe schon Ewigkeiten gesucht. Kann es an der Funktion get_preg_expression liegen?


Mit freundlichen Grüßen

Maximilian Kalinowski
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Probleme mit LINK

Beitrag von cYbercOsmOnauT »

Wenn Du einen Link per file:\\ (oder halt file://) in eine Seite einbaust, erzeugst Du damit einen lokalen Link. Beispiel: file:\\c:\Dokumente\Dokumentation.pdf lässt den Browser lokal auf dem Rechner des Seitenbesuchers in Verzeichnis C:\Dokumente\Dokumentation.pdf schauen. Mir ist nicht ganz klar, was Dir das bringen soll. Normalerweise befinden sich die Dateien unterhalb des DOCROOT des Webservers und sind dann per "normalem Link" aufrufbar.
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Benutzeravatar
StarWolf3000
Mitglied
Beiträge: 1019
Registriert: 25.07.2005 10:20
Wohnort: Stolpen
Kontaktdaten:

Re: Probleme mit LINK

Beitrag von StarWolf3000 »

Wäre anstatt eines lokalen Verweises auf eine Datei nicht ein Verweis auf eine Netzwerk-Ressource besser? Denn ansonsten wird trotz Intranet versucht, die Datei vom Rechner desjenigen zu laden, der phpBB im Browser aufruft. Das setzt dann voraus, dass die Datei bei jedem im Intranet an der gleichen Stelle im Dateisystem vorhanden sein muss.

Backslashes sollten in URLs vermieden werden. Dein Aufruf müsste nach den Regeln des file-Protokolls folgendermaßen aussehen:

Code: Alles auswählen

[url]file:///C:/ordner1/ordner2/ordner3/Dokumentation.pdf[/url]
Bei UNC-Pfaden (Netzwerkfreigaben) stattdessen so:

Code: Alles auswählen

[url]file://///servername/ordner1/ordner2/ordner3/Dokumentation.pdf[/url]
MOD-Einbauhilfe und Installationen über ICQ, TeamSpeak 2/3 und TeamViewer. Support nur im Forum, eingeschränkt per TeamViewer, aber nicht mehr per PN! • KB:knigge
K4L1N0
Mitglied
Beiträge: 3
Registriert: 10.06.2015 14:56

Re: Probleme mit LINK

Beitrag von K4L1N0 »

StarWolf3000 hat geschrieben:Wäre anstatt eines lokalen Verweises auf eine Datei nicht ein Verweis auf eine Netzwerk-Ressource besser? Denn ansonsten wird trotz Intranet versucht, die Datei vom Rechner desjenigen zu laden, der phpBB im Browser aufruft. Das setzt dann voraus, dass die Datei bei jedem im Intranet an der gleichen Stelle im Dateisystem vorhanden sein muss.

Backslashes sollten in URLs vermieden werden. Dein Aufruf müsste nach den Regeln des file-Protokolls folgendermaßen aussehen:

Code: Alles auswählen

[url]file:///C:/ordner1/ordner2/ordner3/Dokumentation.pdf[/url]
Bei UNC-Pfaden (Netzwerkfreigaben) stattdessen so:

Code: Alles auswählen

[url]file://///servername/ordner1/ordner2/ordner3/Dokumentation.pdf[/url]
Danke StarWolf3000,
das Problem, was ich habe ist ja nicht das der Pfad fehlerhaft o.ä. ist, sondern das der Link nicht angezeigt wird. Oder habe ich dich jetzt falsch verstanden?
Es steht dann folgender Text da:
[url]file://///servername/ordner1/ordner2/ordner3/Dokumentation.pdf[/url]
und leider nicht solch einer:
http://www.google.de

Ich hoffe ich konnte das Problem jetzt ein bisschen besser schildern.

EDIT:
Ich darf ergänzen ich habe jetzt etwas neues herausgefunden!

In der Datenbank wird jeder gültiger Link folgendermaßen abgespeichert

Code: Alles auswählen

[url:c3bb5]http://www.google.de[/url:c3bb5] 
vereinfacht:

Code: Alles auswählen

[url:c3bb5]http://www.google.de[/url:c3bb5] 
Jetzt muss ich mein Forum nur noch dazu zwingen, dass es den von mir eingegebene Link auch als auch "Link" speichert also mit der Erweiterung ":c3bb5"

Mit freundlichen Grüßen

Maximilian Kalinowski
K4L1N0
Mitglied
Beiträge: 3
Registriert: 10.06.2015 14:56

Re: Probleme mit LINK

Beitrag von K4L1N0 »

Hallo zusammen,

ich habe jetzt das Problem gelöst! Jedoch gibt es einen kleinen Kompromiss, den ich eingehen musste.

Ich habe jetzt in der Datei "message_parser.php" folgendes geändert:

Dieser Code befindet sich bei circa Zeile 900 - Wichtig ist, das in Zeile 907 die Variable "$valid" auf "true" ist. Daher habe ich den Code etwas angepasst.

Code: Alles auswählen

// Checking urls
        if (preg_match('#^' . get_preg_expression('url') . '$#i', $url) ||
            preg_match('#^' . get_preg_expression('www_url') . '$#i', $url) ||
            preg_match('#^' . preg_quote(generate_board_url(), '#') . get_preg_expression('relative_url') . '$#i', $URL))
        {
            $valid = true;
        } 
Diese Zeile habe ich in die if-abfrage hinzugefügt:

Code: Alles auswählen

preg_match('/\\\\/', $url) 
Und schon war das Problem gelöst!

Mit freundlichen Grüßen

Maximilian Kalinowski
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Probleme mit LINK

Beitrag von gn#36 »

Dir ist aber schon klar, dass du damit alles als valide URL erkennst, wenn es nur zwei aufeinanderfolgende Backslashes enthält, oder?

Ich würde vorschlagen du passt stattdessen die includes/functions.php so an, dass die Funktion get_preg_expression mit dem Parameter 'url' einen Regulären Ausdruck liefert, der die file URLs mit umfasst.

Das ist zwar ne ziemlich lange Zeile:

Code: Alles auswählen

return "[a-z][a-z\d+\-.]*:/{2}(?:(?:[^\p{C}\p{Z}\p{S}\p{P}\p{Nl}\p{No}\p{Me}\x{1100}-\x{115F}\x{A960}-\x{A97C}\x{1160}-\x{11A7}\x{D7B0}-\x{D7C6}\x{20D0}-\x{20FF}\x{1D100}-\x{1D1FF}\x{1D200}-\x{1D24F}\x{0640}\x{07FA}\x{302E}\x{302F}\x{3031}-\x{3035}\x{303B}]*[\x{00B7}\x{0375}\x{05F3}\x{05F4}\x{30FB}\x{002D}\x{06FD}\x{06FE}\x{0F0B}\x{3007}\x{00DF}\x{03C2}\x{200C}\x{200D}\pL0-9\-._~!$&'()*+,;=:@|]+|%[\dA-F]{2})+|[0-9.]+|\[[a-z0-9.]+:[a-z0-9.]+:[a-z0-9.:]+\])(?::\d*)?(?:/(?:[^\p{C}\p{Z}\p{S}\p{P}\p{Nl}\p{No}\p{Me}\x{1100}-\x{115F}\x{A960}-\x{A97C}\x{1160}-\x{11A7}\x{D7B0}-\x{D7C6}\x{20D0}-\x{20FF}\x{1D100}-\x{1D1FF}\x{1D200}-\x{1D24F}\x{0640}\x{07FA}\x{302E}\x{302F}\x{3031}-\x{3035}\x{303B}]*[\x{00B7}\x{0375}\x{05F3}\x{05F4}\x{30FB}\x{002D}\x{06FD}\x{06FE}\x{0F0B}\x{3007}\x{00DF}\x{03C2}\x{200C}\x{200D}\pL0-9\-._~!$&'()*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[^\p{C}\p{Z}\p{S}\p{P}\p{Nl}\p{No}\p{Me}\x{1100}-\x{115F}\x{A960}-\x{A97C}\x{1160}-\x{11A7}\x{D7B0}-\x{D7C6}\x{20D0}-\x{20FF}\x{1D100}-\x{1D1FF}\x{1D200}-\x{1D24F}\x{0640}\x{07FA}\x{302E}\x{302F}\x{3031}-\x{3035}\x{303B}]*[\x{00B7}\x{0375}\x{05F3}\x{05F4}\x{30FB}\x{002D}\x{06FD}\x{06FE}\x{0F0B}\x{3007}\x{00DF}\x{03C2}\x{200C}\x{200D}\pL0-9\-._~!$&'()*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[^\p{C}\p{Z}\p{S}\p{P}\p{Nl}\p{No}\p{Me}\x{1100}-\x{115F}\x{A960}-\x{A97C}\x{1160}-\x{11A7}\x{D7B0}-\x{D7C6}\x{20D0}-\x{20FF}\x{1D100}-\x{1D1FF}\x{1D200}-\x{1D24F}\x{0640}\x{07FA}\x{302E}\x{302F}\x{3031}-\x{3035}\x{303B}]*[\x{00B7}\x{0375}\x{05F3}\x{05F4}\x{30FB}\x{002D}\x{06FD}\x{06FE}\x{0F0B}\x{3007}\x{00DF}\x{03C2}\x{200C}\x{200D}\pL0-9\-._~!$&'()*+,;=:@/?|]+|%[\dA-F]{2})*)?";
aber vermutlich ist das Problem primär die Zahl der Slashes nach dem Protokoll:
[url]file://xyz.de[/url]
[url]file:///xyz.de[/url]


Daher musst du vermutlich lediglich ganz am Anfang aus:

Code: Alles auswählen

[a-z][a-z\d+\-.]*:/{2}
das machen:

Code: Alles auswählen

[a-z][a-z\d+\-.]*:/{2,4}
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „Coding & Technik“