Verlinkung auf lokales File funktioniert nicht
Hallo Leute ich habe folgendes Problem:
ich möchte eine Verlinkung auf ein lokal gespeichertes HTML Dokument machen. Die webseite läuft auf einem localhost webserver via xammp. nun hab ich in meiner Datenbank die Pfade zu stehen beispielsweise:
mein Verweis auf den Pfad läuft so:
Diesen Text lese ich aus der Datenbank und möchte ihn per Klick auf einem Hyperlink in einem neuen Fenster öffnen. Dazu hab ich folgendes definiert:
allerdings passiert beim klicken auf den Link nix. In der Statusleiste des Browsers ist folgendes zu sehen:
wie gesagt beim klicken auf den Link passiert nichts. Hoffe ihr kriegt den Fehler raus.
Über eure Hilfe wär ich sehr dankbar.
ich möchte eine Verlinkung auf ein lokal gespeichertes HTML Dokument machen. Die webseite läuft auf einem localhost webserver via xammp. nun hab ich in meiner Datenbank die Pfade zu stehen beispielsweise:
"D:\start.html"
mein Verweis auf den Pfad läuft so:
$pro_pfd =$_GET['pfad'];
Diesen Text lese ich aus der Datenbank und möchte ihn per Klick auf einem Hyperlink in einem neuen Fenster öffnen. Dazu hab ich folgendes definiert:
<a href="file://"'.$pro_pfd.' target="_blank">Details</a>
allerdings passiert beim klicken auf den Link nix. In der Statusleiste des Browsers ist folgendes zu sehen:
"file:///D:/start.html"
wie gesagt beim klicken auf den Link passiert nichts. Hoffe ihr kriegt den Fehler raus.
Über eure Hilfe wär ich sehr dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 144577
Url: https://administrator.de/forum/verlinkung-auf-lokales-file-funktioniert-nicht-144577.html
Ausgedruckt am: 23.12.2024 um 13:12 Uhr
11 Kommentare
Neuester Kommentar
Hallo,
ich würde den Link über den Xamp-Server aufbauen, die Datei in den htdocs-Ordner schieben und folgendes beachten:
--
LG
RedEye
ich würde den Link über den Xamp-Server aufbauen, die Datei in den htdocs-Ordner schieben und folgendes beachten:
$pro_pfd =$_GET['pfad'];
$trusted = array('start.html', 'usw');
if (in_array($pro_pfd, $trusted))
{
if (file_exists($pro_pfd))
{
echo '<a href="http://localhost/" . $pro_pfd . " target="_blank">Details</a>';
}
}
--
LG
RedEye
Zitat von @fabmeister19:
hey danke für die antworten.
@RedEye:
ja das geht leider nicht. der datei verweis ist nen link auf ne "start.html" da wo die start.html liegt liegen auch noch
viele andere dateien. da zu jedem projekt immer ne HTML Ansicht des Projekts erzeugt wird. es würde mir also am meisten
helfen wenn alles da liegen könnte wo es bleibt, und die verlinkung trotzdem geht
hey danke für die antworten.
@RedEye:
ja das geht leider nicht. der datei verweis ist nen link auf ne "start.html" da wo die start.html liegt liegen auch noch
viele andere dateien. da zu jedem projekt immer ne HTML Ansicht des Projekts erzeugt wird. es würde mir also am meisten
helfen wenn alles da liegen könnte wo es bleibt, und die verlinkung trotzdem geht
Hallo,
das heisst Du hast die zu verlinkenden Dateien nicht im DocumentRoot Deines Webservers?
Dann erstell quasi ein zusätzliches DocRoot im ApacheServer.
Dazu erstellst Du einen Alias in der httpd.conf.
Alias /v2 "d:/v2/"
<Directory "d:/v2">
Order allow,deny
Allow from all
</Directory>
Dann sollte der Link via http://localhost/v2/ möglich sein.
--
LG
RedEye
Warum nimmst Du eigentlich die Pfade deiner Projekte aus einer DB??
Sorry, sieht sehr verkompliziert aus
Ich bin eher ein Freund eines übersichtlichen Dateisystems, bei mir schauts am Produktionsserver so aus:
Das Ding wird täglich weggesichert, der Überblick ist auch für andere Entwickler gegeben und es liegt alles im DocRoot-Ordner.
In dem Fall würde das nicht funktionieren weil du ja den Pfad "Projekte\0003-11-06 BE Sandauer Holz 2\015 Ausführungsplanung\Auslieferungen\Endfassung" in der httpd.conf berücksichtigen müsstest.
Andere Idee......
In der loader.php includest Du dann die jeweilige Datei:
-- Abfrage ob Datei existiert usw.
-- include(Die Datei);
--
LG
RedEye
Sorry, sieht sehr verkompliziert aus
Ich bin eher ein Freund eines übersichtlichen Dateisystems, bei mir schauts am Produktionsserver so aus:
-htdocs
----projekt1
----projekt2
----usw.
Das Ding wird täglich weggesichert, der Überblick ist auch für andere Entwickler gegeben und es liegt alles im DocRoot-Ordner.
In dem Fall würde das nicht funktionieren weil du ja den Pfad "Projekte\0003-11-06 BE Sandauer Holz 2\015 Ausführungsplanung\Auslieferungen\Endfassung" in der httpd.conf berücksichtigen müsstest.
Andere Idee......
<a href="loader.php?target='.$pro_pfd.' target="_blank">Details</a> (In der $pro_pfd steht der übergeben Pfad drinnen)
In der loader.php includest Du dann die jeweilige Datei:
-- Abfrage ob Datei existiert usw.
-- include(Die Datei);
--
LG
RedEye
lass dir den zusammengestellten pfad mal ausgeben:
echo $seite . "/start.html";
(Schreib nur Strings in Anführungsstrichen und seperiere Variablen davon: include($seite . "/start.html");
und:
verwende ggf. urldecode() und urlencode() damit der Pfad korrekt übergeben wird (Leerzeichen usw).
Hoffe ich hab mich nicht vertippt, hab keine Möglichkeit das jetzt zu testen
echo $seite . "/start.html";
(Schreib nur Strings in Anführungsstrichen und seperiere Variablen davon: include($seite . "/start.html");
und:
verwende ggf. urldecode() und urlencode() damit der Pfad korrekt übergeben wird (Leerzeichen usw).
<?php
$target = (!empty($_GET['target'])) ? (trim(urldecode($_GET['target'])) . '/start.html') : (false);
if (file_exists($target))
{
include($target);
}
else
{
echo 'File "<b>' . $target . '</b>" not found!<br />';
}
?>
Hoffe ich hab mich nicht vertippt, hab keine Möglichkeit das jetzt zu testen