Seite 1 von 1
Probleme mit LINK
Verfasst: 10.06.2015 15:12
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
Re: Probleme mit LINK
Verfasst: 10.06.2015 15:36
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.
Re: Probleme mit LINK
Verfasst: 10.06.2015 15:37
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]
Re: Probleme mit LINK
Verfasst: 10.06.2015 16:28
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:
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
Re: Probleme mit LINK
Verfasst: 11.06.2015 09:19
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:
Und schon war das Problem gelöst!
Mit freundlichen Grüßen
Maximilian Kalinowski
Re: Probleme mit LINK
Verfasst: 11.06.2015 19:31
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:
das machen: