PHP findet Textdatei nicht
Ulf
- php
Hi, ich möchte eine Textdate öffnen, aber er findet die Datei nciht, allerdings kann man sie über einen Link öffnen.
<html>
<head>
<?
echo "<title>Bilder Detailansicht: $_GET[bild]</title>";
?>
<meta name="author" content="Ulf Wüstefeld">
<?
if($_SESSION[stil]=="hell")
{
echo "<link rel='stylesheet' href='$hell' type='text/css'>";
}
else
{
echo "<link rel='stylesheet' href='$dunkel' type='text/css'>";
}
?>
</head>
<body>
<?
echo "<center><a href=bilder.php?ordner=$_GET[ordner]><img src='./$_GET[ordner]/$_GET[bild]'></a><br>";
echo "<font size=-1>Klicken Sie in das Bild, um zurück zur Bilderübersicht zu gelangen.</font></center><br><br>";
$test=strrev($_GET[bild]);
$test=strstr($test, '.');
$test=strrev($test);
$test = "http://www.niederrheinhalle.de/bilder/" . $_GET[ordner] . "/" . $test . "txt";
if(file_exists($test))
{
echo "Datei $test existiert<br>";
}
{
echo "Datei $test existiert nicht<br>";
}
echo "<a href='$test'>$test</a><br>";
$test = fopen($test,"r");
while (!feof($test))
{
$buffer = fgets($test, 4096);
echo "$buffer";
}
fclose ($test);
?>
</body>
</html>
dir ist schon bewusst das bei $_GET[ordner] die '' fehlen?? also es eigentlich $_GET['ordner'] heißen müsste??
Hi,
dir ist schon bewusst das bei $_GET[ordner] die '' fehlen?? also es eigentlich $_GET['ordner'] heißen müsste??
übrigens auch bei $_GET[bild]. Man kann auch die doppelten Anführungszeichen nehmen.
MfG Hopsel
Moin Ulf,
$test = "http://www.niederrheinhalle.de/bilder/" . $_GET[ordner] . "/" . $test . "txt";
if(file_exists($test))
lies mal hier nach http://www.php.net/manual/de/function.file-exists.php
Dort ist unter anderm zu lesen:
Anmerkung: Diese Funktion kann nicht mit entfernten Dateien arbeiten, da der Zugriff auf die Datei, die bearbeitet werden soll, über das Dateisystem des Servers möglich sein muss.
regds
Mike©
Habe den Pfad soweit angepasst, dass er nicht über die externe Adresse geht, sondern lokal
$test = "./" . $_GET['ordner'] . "/" . $test . "txt";
Moin Ulf,
»» Habe den Pfad soweit angepasst, dass er nicht über die externe Adresse geht, sondern lokal
$test = "./" . $_GET['ordner'] . "/" . $test . "txt";
Und? Geht oder geht net?
regds
Mike©
geht latürnich net.
Irgendwie habe ich heute das Glück gepachtet
Moin Ulf,
»» geht latürnich net.
hast Du dir mal den Inhalt von $test anzeigen lassen?
echo $test;
regds
Mike©
Ja, habe ich.
Hier kommst du auf die Seite:
http://www.niederrheinhalle.de/bilder/bilder_detail.php?bild=Grosser%20Saal.JPG&ordner=test
Moin Ulf,
http://www.niederrheinhalle.de/bilder/bilder_detail.php?bild=Grosser%20Saal.JPG&ordner=test
mit einem Schnellschuß vermute ich mal das das Leerzeichen (%20) die Ursache sein könnte. Ich empfehle alle Dateinamen immer klein zu schreiben, kein Leerzeichen sondern Unterstrich.
Windoof handelt das tolerant, andere Systeme nicht.
regds
Mike©
Hello,
Windoof handelt das tolerant, andere Systeme nicht.
was z.B. bei FTP-Downloads von einem fremden Server (also einem, den man nicht selber eingerichtet hat) schon gefährlich werden kann. Wenn da nämlich Dateien in Groß-/Kleinschreibung dabei sind, die die gleichen Namen haben (aber eben an anderen Stellen die Versalien und Gemeinen), dann sind die nachher eben einfach nicht mehr da.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
VOLLTREFFER!
DANKE!!!
Hello Ulf,
da das, was Du da machst, sowieso Genickschuss-Code ist (Injection, Dateisystem ist gefährdet), solltest Du nochmal von vorne anfangen. Ich hatte da diese Woche erst auf einen Thread geantwortet, der die Sicherheit von PHP-Code betraf. Da war genau Dein Beispiel beschrieben.
So macht man[tm] das nicht, wenn keine Sicherheitslöcher entstehen sollen. ;-))
Du solltest niemals den Direktzugriff auf ein Dateisystem zulassen, was Du aber machst, wenn Du einen externen Parameter in den Pfad übernimmst.
Die bessere Vorgehensweise wäre es, wenn Du einen Translation-Table dazwischen schaltest. Den kannst Du dann auch mittels eines Scriptes füllen, das aber nicht von außen zur Verfügung stehen muss/sollte.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom