fabmeister19
Goto Top

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:
"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.

Content-Key: 144577

Url: https://administrator.de/contentid/144577

Printed on: April 25, 2024 at 04:04 o'clock

Member: masterG
masterG Jun 11, 2010 at 22:02:37 (UTC)
Goto Top
schon mal ohne file:// probiert. Ist eigentlich nicht notwendig bei HTML seiten.
Member: RedEye
RedEye Jun 16, 2010 at 09:24:58 (UTC)
Goto Top
Hallo,

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
Member: fabmeister19
fabmeister19 Jun 17, 2010 at 06:14:49 (UTC)
Goto Top
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 face-smile
Member: RedEye
RedEye Jun 17, 2010 at 07:45:03 (UTC)
Goto Top
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 face-smile

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>
(Ungetestet, schau sicherheitshalber in der Apache Doku nach)

Dann sollte der Link via http://localhost/v2/ möglich sein.

--
LG
RedEye
Member: fabmeister19
fabmeister19 Jun 17, 2010 at 08:03:50 (UTC)
Goto Top
Okay, danke erstmal soweit?!

Also ich habe in meinem Projekt in meiner Datenbank immer den Dateipfad des Projekts gespeichert! Der könnte folgendermaßen lauten:

T:\Projekte\0003-11-06 BE Sandauer Holz 2\015 Ausführungsplanung\Auslieferungen\Endfassung\start.html

Diesen Pfad möchte ich dann beim klicken auf den Link öffnen:

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>  

Läuft das denn mit der Verlinkung? ich habe folgendes in die httpd.conf geschrieben:

Alias /v2 "T:/v2/"   

<Directory "T:">   

Order allow,deny 

Allow from all 

</Directory>
Funktioniert das alles soweit?
Member: RedEye
RedEye Jun 17, 2010 at 08:30:25 (UTC)
Goto Top
Warum nimmst Du eigentlich die Pfade deiner Projekte aus einer DB??
Sorry, sieht sehr verkompliziert aus face-smile
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
Member: fabmeister19
fabmeister19 Jun 17, 2010 at 08:38:51 (UTC)
Goto Top
okay danke dafür, ich probiers mal
Member: fabmeister19
fabmeister19 Jun 17, 2010 at 08:54:27 (UTC)
Goto Top
also hab folgendes probiert:
als pfad in meiner DB steht nur noch folgendes:
T:\Projekte\0003-11-06 BE Sandauer Holz 2\015 Ausführungsplanung\Auslieferungen\Endfassung\

der pfad wird übergeben :
<a href="loader.php?='.$pro_pfd.'" target="_blank">Details</a>  

in der datei loader.php steht folgendes:

<?php
        $seite = $_GET['target'];  
        include("$seite/start.html");  
        ?>

geht aber nicht.

Warning: include(start.html) [function.include]: failed to open stream: No such file or directory in C:\xampp\xampp\htdocs\PIS\loader.php  on line 3

hast du ne idee wie ich das dann einbinde. hab schon mehrere varianten probiert.
Member: RedEye
RedEye Jun 17, 2010 at 09:13:00 (UTC)
Goto Top
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).

<?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 face-smile
Member: fabmeister19
fabmeister19 Jun 17, 2010 at 09:25:47 (UTC)
Goto Top
File
T:\Projekte\0013-22-04 Wehr IV\015 Ausführungsplanung\Auslieferungen\Endfassung\start.html
not found! meldet er...
Member: RedEye
RedEye Jun 17, 2010 at 09:30:48 (UTC)
Goto Top
Hast Du über die php.ini irgendwelche Einschränkungen was das Dateisystem betrifft?
Nachdem Du Xamp verwendest fährst Du auf Windows oder?
Kopier dir die Zeile mit dem Pfad, gib sie im Explorer ein.
Und schau was passiert, wird die Datei geöffnet?