Hallo zusammen.
Vielleicht hat es der eine oder andere, der sich gestern in #tutorials.de aufgehalten hat, schon mitbekommen. Ich bin ein wenig am verzweifeln, da mein Download-Script welches zuvor einwandfrei funktioniert hat, auf einmal nicht mehr geht.
Zur Ausgangssituation:
Ich betreibe lokal eine kleine Page für mich und meine Kumpels. Die Page verfügt über einen Bereich, der nur zugänglich ist, falls man sich einloggt. In diesem Bereich wiederum gibt es eine "Download-Section". Dort gibt es ein paar Freeware Tools, Bilder und andere Nettigkeiten. Das tut aber eigentlich nichts zur Sache. Da ich die jeweiligen Dateien nicht in den htdocs Ordner kopieren wollte bzw es nach wie vor nicht will, habe ich zum Zugriff auf die Dateien ein Download-Protection-Script leicht abgewandelt, welches mit HTTP-Headern und dem readfile() Befehl arbeitet. Dieses Script sitzt in der transfer.php .
Soweit sogut. Es funktionierte (mit Session einwanfrei) und funktioniert auch immer noch. Allerdings NICHT wenn in der ersten Zeile der transfer.php nach <?php ein session_start() steht.
Folgendes passiert:
- Steht das session_start() nicht dort, so bekomme ich den Downloaddialog korrekt angezeigt, ich drücke auf speichern, gebe einen Ort ein und alles ist wunderbar.
- Steht jedoch in der ersten Zeile ein session_start(), so gibt mir der Downloaddialog als Namen der zu speichernden Datei den Querystring an, in dem Verzeichnis und Dateinamen an die transfer.php übergeben wurden. Ich drücke auf speichern und eine Fehlermeldung erscheint, dass die gewünschte Datei nicht vorhanden ist.
Ich muss aber unbedingt die session starten, damit ich überprüfen kann ob der jeweilige User überhaupt eingeloggt ist und somit Zugriff auf die Download-Funktion hat. Der Witz an der Geschichte:
Das hat alles schonmal funktioniert und ich habe seitdem eigentlich nichts geändert
Hier die transfer.php (in groben Zügen)
Bei Fragen zum Code...immer her damit
Vielleicht hat es der eine oder andere, der sich gestern in #tutorials.de aufgehalten hat, schon mitbekommen. Ich bin ein wenig am verzweifeln, da mein Download-Script welches zuvor einwandfrei funktioniert hat, auf einmal nicht mehr geht.
Zur Ausgangssituation:
Ich betreibe lokal eine kleine Page für mich und meine Kumpels. Die Page verfügt über einen Bereich, der nur zugänglich ist, falls man sich einloggt. In diesem Bereich wiederum gibt es eine "Download-Section". Dort gibt es ein paar Freeware Tools, Bilder und andere Nettigkeiten. Das tut aber eigentlich nichts zur Sache. Da ich die jeweiligen Dateien nicht in den htdocs Ordner kopieren wollte bzw es nach wie vor nicht will, habe ich zum Zugriff auf die Dateien ein Download-Protection-Script leicht abgewandelt, welches mit HTTP-Headern und dem readfile() Befehl arbeitet. Dieses Script sitzt in der transfer.php .
Soweit sogut. Es funktionierte (mit Session einwanfrei) und funktioniert auch immer noch. Allerdings NICHT wenn in der ersten Zeile der transfer.php nach <?php ein session_start() steht.
Folgendes passiert:
- Steht das session_start() nicht dort, so bekomme ich den Downloaddialog korrekt angezeigt, ich drücke auf speichern, gebe einen Ort ein und alles ist wunderbar.
- Steht jedoch in der ersten Zeile ein session_start(), so gibt mir der Downloaddialog als Namen der zu speichernden Datei den Querystring an, in dem Verzeichnis und Dateinamen an die transfer.php übergeben wurden. Ich drücke auf speichern und eine Fehlermeldung erscheint, dass die gewünschte Datei nicht vorhanden ist.
Ich muss aber unbedingt die session starten, damit ich überprüfen kann ob der jeweilige User überhaupt eingeloggt ist und somit Zugriff auf die Download-Funktion hat. Der Witz an der Geschichte:
Das hat alles schonmal funktioniert und ich habe seitdem eigentlich nichts geändert

Hier die transfer.php (in groben Zügen)
PHP:
<?php
session_start(); //Hab ich eigentlich momentan deaktiviert mit // damit es überhaupt noch geht.
include('sqlconnect.php');
$query = "SELECT value FROM permission WHERE name = 'download'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
if($_SERVER[REMOTE_ADDR] == "127.0.0.1" || substr($_SERVER[REMOTE_ADDR],0,10) == "192.168.1." || $row['value'] == "true") {
if(strlen($_REQUEST['dir']) == "1" || strlen($_REQUEST['dir'] == "2")) {
switch($_REQUEST['dir']) {
case 1:
$path = "C:\\bla/";
break;
case 20:
$path = "E:\\bla\\1\\1/";
break;
case 21:
$path = "E:\\bla\\1\\2/";
break;
case 22:
$path = "E:\\bla\\1\\3/";
break;
case 23:
$path = "E:\\bla\\1\\4/";
break;
case 24:
$path = "E:\\bla\\1\\5/";
break;
case 25:
$path = "E:\\bla\\1\\6/";
break;
case 26:
$path = "E:\\bla\\1\\7/";
break;
case 3:
$path = "E:\\bla\\2/";
break;
case 4:
$path = "E:\\blub/";
break;
}
}
else {
$path = str_replace(";","\\\",$_REQUEST['dir']);
$path = $path."/";
}
include('mime.php');
$extget = explode(".", $file);
$extension = $extget[1];
$sendmime = $mimetypes[$extension];
header ("HTTP/1.1 200 OK");
header("Content-type: $sendmime");
header("Content-Disposition: attachment; filename=$file");
readfile($path.$file);
}
else {
echo "<html><head><title>download</title></head><body style=\"background-color: #333333; text-align: center; color: #999999\">";
echo "<span style=\"font-family: Verdana; font-size: 10\">Die Downloadfunktion ist momentan deaktiviert!</span>";
echo "</body></html>";
}
?>
Bei Fragen zum Code...immer her damit

Zuletzt bearbeitet: