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-ID: 144577

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

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

masterG
masterG 12.06.2010 um 00:02:37 Uhr
Goto Top
schon mal ohne file:// probiert. Ist eigentlich nicht notwendig bei HTML seiten.
RedEye
RedEye 16.06.2010 um 11:24:58 Uhr
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
fabmeister19
fabmeister19 17.06.2010 um 08:14:49 Uhr
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
RedEye
RedEye 17.06.2010 um 09:45:03 Uhr
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
fabmeister19
fabmeister19 17.06.2010 um 10:03:50 Uhr
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?
RedEye
RedEye 17.06.2010 um 10:30:25 Uhr
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
fabmeister19
fabmeister19 17.06.2010 um 10:38:51 Uhr
Goto Top
okay danke dafür, ich probiers mal
fabmeister19
fabmeister19 17.06.2010 um 10:54:27 Uhr
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.
RedEye
RedEye 17.06.2010 um 11:13:00 Uhr
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
fabmeister19
fabmeister19 17.06.2010 um 11:25:47 Uhr
Goto Top
File
T:\Projekte\0013-22-04 Wehr IV\015 Ausführungsplanung\Auslieferungen\Endfassung\start.html
not found! meldet er...
RedEye
RedEye 17.06.2010 um 11:30:48 Uhr
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?