hi so nu habe ich es. ich muss dazwscihen noch eine seite aufbauen ! also meine download.php nicht direkt öffnen lassen, sondern über eine zwischenseite öffnen lassen.
Datenklau vermeiden
Einklappen
X
-
so, jetzt habe ich mich doch zu früh gefreut. rgendiwe ging es vorhin nu aber net mehr...
dafür habe ich den grund herausbekommen....
ersteinmal der quellcode :
PHP-Code:session_start();
mysql_connect($dbserver,$dbuser,$dbpass);
mysql_select_db($dbname);
$result = mysql_fetch_array(mysql_query("SELECT download FROM download_files WHERE (fileid = '$fileid')"));
$download= $result['download'];
$sql="UPDATE download_files SET hits= hits + 1, dayhits = dayhits + 1 , monthhits = monthhits +1 WHERE fileid='$fileid'";
$conn=mysql_query($sql);
$teile=explode('/',$download);
$file = "$teile[5]";
$ordner = "../../../basti/download/".$teile[4]."/";
if ($_SESSION["userlevel"]=='0')
{ $speed = 8.5; // 8,5 kb/s download rate limit
}
else {
$speed = 86.5; // 8,5 kb/s download rate limit
}
if(file_exists($ordner.$file) && is_file($ordner.$file)) {
header("Cache-control: private");
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($ordner.$file));
header("Content-Disposition: attachment; filename=\"$file\"");
flush();
$fd = fopen($ordner.$file, "r");
while(!feof($fd)) {
echo fread($fd, round($speed*1024));
flush();
sleep(1);
}
fclose ($fd);
}
so, sobald ich session_start herausnehme funzt es und ich kann während er ein file zieht, gemütlich auf meiner webseite weitersurfen, doch sobald in der datei die session gestartet wird, lässt er nichts gleichzeitig zu....
bitte bitte ich brauche eure hilfe .....
Kommentar
-
hi,
musste eben auch festellen, dass netscape mit dem header probs macht , und zwar will er wenn man mit de linken maustaste ein download startet, immer eine php datei runterladen. mit der rechten maustastet un dsave link targat as klappt es wunderbar, auch bei netscape. ich frage mich warum denn nur mit links net...?!?!
Kommentar
-
ich glaube dieses problem betrifft aber nur den dateinamen.
es wird trotzdem die richtige datei heruntergeladen, du musst sie halt nur anschliessend noch umbenennen...
prüfe das doch mal.I don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
-
hi das stimmt, also es reicht dann die datei umzubennen. nur würde ich es gerne auch schon vorher so haben, dass er sie korrekt runterlädt. habe deswegen das header("Content-Type: application/octet-stream");
durch einen array ersetzt, in dem er den ganaun application ausliest,
und nu geht es...
nur das mit den sessions und fread funzt immer noch nichtZuletzt geändert von nomidi; 13.03.2003, 11:57.
Kommentar
-
Hi !!
Das Problem, dass man während des downloads keine anderen Seiten ansprechen kann kommt daher, dass die Session-Daten immer gespeichert werden, nachdem ein Script beendet wurde. Da es aber über die gesamte downloadzeit läuft, sind die Daten also noch nicht geschrieben und um Probleme zu verhindern ist die session auch solange gesperrt.
Du kannst die session expliziet mit der Funtion session_write_close() beenden und speichern. Das also vor der Ausgabe-Funktion gesetzt, sollte das Problem beheben.
Gruss
Jan
Kommentar
-
Eine andere Möglichkeit wäre noch die Dateien direkt in der DB zu speichern. in einem longblob! Dann ebenfalls mit download.php?id=41&sessid=jf09sah2309dja9234usw. aufrufen über die session id überprüfen ob er von DEINER Downloadsektion kommt ansonsten zu der Downloadarea weiterleiten. So kann von extern niemand auf deine files verlinken und auch nicht den Pfad ausfindig machen![font=tahoma]
Agentursoftware
Zend Framework Resource
FM4 Sammelalbum
"The most important part of the work is the beginning" - Plato
"..so dance while you still have feet and smile while you still have teeth.." - Caesars[/font]
Kommentar
-
Original geschrieben von nomidi
hi so nu habe ich es. ich muss dazwscihen noch eine seite aufbauen ! also meine download.php nicht direkt öffnen lassen, sondern über eine zwischenseite öffnen lassen.
das mit deiner Seite ist sowieso "schmu". Wenn ich nach deinen neuen Regeln als Gast nur eine Datei runterladen darf ist das ja ok. Aber nicht auf die "Annahme-Theorie" ich hab eben ausversehen den falschen DL angeklickt. Hab nicht mal auf speicher gedrückt sondern sofort auf Abbrechen ... und er erzählt mir ich darf nicht weiteres runterladen weil ich jetzt mal 5 Minuten warten müsste?!
Kommentar
-
Hi
Ich hab nicht alle Antworten durchgelesen, aber hier eine idee :
Du hast dein file : file.zip
nen guten namen vergeben, damit man den nicht heruasbekommt.
Jeder user der es runterladen darf, bekommt das teil als sessionidxxx.zip zum runterladen, der clou ist du kopierst das file in einen ordner, benennst es um und löscht es nach einigen stunden wieder.
selbst wenn man dann drauf verlinkt, ist der link dauernd broken. im temp verzeichnis lässt du ein skript laufen, dass alle ateien löscht die älter als x stunden sind.
wenn duein file 100kb hast würd ich es maximal ne stunde drin lassen, bei sachen wie 100mb schon eher nen halben tag.
just an idea
cya max
Kommentar
Kommentar