[PHP] [Neues Problem] --> Geschafft : DL Geschwindigkeit

mydoys.de

Well-known member
ID: 84968
L
20 April 2006
2.743
123
---------NEU-------------
Bevor ich den Code Poste brauche ich aber nochmal eure Hilfe..
Und zwar möchte ich gerne Am Anfang einen Prüfung haben ob es die Datei gibt oder nicht wenn ja Script ausführen wenn nicht Script Stoppen und Fehler Meldung ausgeben....

Wer kann mir da helfen??
-----------------NEU------------------






Hi Leute im alten Forum gab es schon mal ein Thema darüber die DL Geschwindigkeit beim Runter laden zu beeinflussen mit Hilfe von PHP ich habe aus dem Thema noch diese CodeSchnipsel:



//-----> DL Geschwindigkeit <-----
$speed = 8.5;
//-----> Name der Datei <-----
$file = "test.zip";

$acp = explode('.',$file);
$acc = count($acp) - 1;
$app = "x-".$acp["$acc"]."-compressed";
$gross = filesize("dlfiles/$file");
if(file_exists("$file") && is_file("$file")) {
header("Cache-control: private");
header("Content-Type: application/$app");
header("Content-Length: $gross");
header("Content-Disposition: attachment; filename=\"$file\"");
ob_end_flush(); //nur bei ob_end_start()

$fd = fopen("$file", "r");
while(!feof($fd)) {
echo fread($fd, round($speed*1024));
flush();
sleep(1);
}
fclose ($fd);

}




<?
class download {
// Constuct
public function __construct($file = false, $speed = 50){
if(file_exists($file) && is_file($file)){
$this->header('x-'.strrchr($file, '.').'-compressed', filesize($file), $file);
$this->content($file, $speed);
}
}
private function header($app, $size, $file){
ini_set (max_execution_time, 0);
header('Cache-control: private');
header('Content-Type: application/'.$app);
header('Content-Length: '.$size);
header('Content-Disposition: attachment; filename="'.$file.'"');
}
private function content($file, $speed){
$fd = fopen($file, 'r');
while(!feof($fd)) {
echo fread($fd, round($speed*1024));
sleep(1);
}
fclose ($fd);
}
}

new download('test.zip', 8.5);
?>

Aber irgentwie bringen mit beide nix..
bei mir geht es um Videos... wer kann weiter helfen??
 
Zuletzt bearbeitet:
Was bringt dir nichts bzw was willst du ?

Ich kann erneut nur auf die http-pecl Erweiterung verweisen ...
 
topfklao schrieb:
Vielleicht für einen Fileupload, wo er den DL verlangsamen will:LOL:


fast aber für unsere Privates Forum nur wenn da alle aufeinmal kommen und das zeug Downloden ist das net so gut für den Speed deswegen will ich es langsamer laufen lassen so mit 100 ...
 
Hi,
hatte auch mal gesucht und in einem Forum wurde ich auf diese Seite verwiesen. Suchst du per STRG+F dort nach "Speed", findest du dieses Script:
PHP:
<?php

$file = "test.mp3"; // file to be send to the client
$speed = 8.5; // 8,5 kb/s download rate limit

if(file_exists($file) && is_file($file)) {

   header("Cache-control: private");
   header("Content-Type: application/octet-stream");
   header("Content-Length: ".filesize($file));
   header("Content-Disposition: filename=$file" . "%20");

   flush();

   $fd = fopen($file, "r");
   while(!feof($fd)) {
         echo fread($fd, round($speed*1024));
       flush();
       sleep(1);
   }
   fclose ($fd);

}

?>
Ich habe das Script mit deinen beiden Scripts verglichen - dieses ist an einigen Stellen ein wenig anders, könnte sein, dass es deshalb klappt. Einfach ausprobieren.

Hoffe, geholfen zu haben.
 
Danke geholfen schon nur wenn ich das so machen möchte wie ich das will klappt auch diese Script nicht..

Also wenn ich bei file den Namen eintrage da geht es aber ich möchte diese so machen:

Bsp :
dl.php?name=bmx.mpg
Dann klappt es nicht mehr dann habe ich ein Haufen von den Zeichen:

åM’/–Z^/–€´]À¸…˜bPi¸¤d!8FÛn"h¹=›ÕÉœ}IÖj7„…$58¤n”§¶Øßsä×·êK)Õyp²SÜAQ¾â_"`û& &âÓ‰dÆGùãs€�t“çÓ· �Õ'µ¤…£””î~ÿpï<í¤0„g7©)H•HiHËJ¤ÌÁH5V�Øi ²ÙÛ“ï¦ß37PÓ¸!s“á^Ÿ÷>"“âIëžDŸ[éjjFùã°øy†ÏÅHžo¼0L°¸©4r·>?TV|ñ%

auf dem Bildschirm...

Wer kann da helfen?
 
mydoys.de schrieb:
Wer kann da helfen?
Das is ja n Mpeg ;)

Da musst du den passenden content-type-Header mitschicken, sonst erkennt dein Browser die Daten ja nicht.
 
theHacker schrieb:
Das is ja n Mpeg ;)

Da musst du den passenden content-type-Header mitschicken, sonst erkennt dein Browser die Daten ja nicht.


hm gibt es einen Header den ich mitsenden kann der für alle Video ist?
Den ich habe avi/wmv und so die damit runtergeladen werden sollen...
 
Betagroup schrieb:


ok danke ich habe mich dafür entschieden:

PHP:
header("Cache-control: private");
 header("Content-Type: application/video");
 header("Content-Length: ".filesize($file));
 header("Content-Disposition: filename=$file" . "%20");

kann das sein das da immer noch was falsch ist den die Download Datei heist jetzt einfach nur dl. es ist aber das Video..

Kein Endung sondern einfach nur dl
 
so nach vielen Test und Langen Nächten habe ich es endlich hin bekommen,....


Und meines funzt jetzt mit jeder Datei egal was für eine und das echt Prima...


https://movie.gotchaforum.de/dl3.php?file=bmx.mpg
https://movie.gotchaforum.de/dl3.php?file=ronny2.jpg
https://movie.gotchaforum.de/dl3.php?file=ronny.zip

(Nur als Bsp der Speed ist hier nur auf 1)


Bevor ich den Code Poste brauche ich aber nochmal eure Hilfe..
Und zwar möchte ich gerne Am Anfang einen Prüfung haben ob es die Datei gibt oder nicht wenn ja Script ausführen wenn nicht Script Stoppen und Fehler Meldung ausgeben....

Wer kann mir da helfen??
 
mydoys.de schrieb:
Bevor ich den Code Poste brauche ich aber nochmal eure Hilfe..
Und zwar möchte ich gerne Am Anfang einen Prüfung haben ob es die Datei gibt oder nicht wenn ja Script ausführen wenn nicht Script Stoppen und Fehler Meldung ausgeben....

Wer kann mir da helfen??

Das Codeposten übernehme ich mal für dich - bitte achte auf die Sicherheit!

*Hab den Code mal wieder rausgenommen*
 
Zuletzt bearbeitet:
weis jemand wie ich das Problem wieder weg bekomme?
Das ist ja echt ein Sicherheits Bug ohne ende.......... 8O 8O 8O 8O
 
das sicherste wäre wenn du das ganze datenbankgestützt machen würdest... also für jeden download nen eintrag in der datenbank mit pfad und id. und dem download script nur die id übergeben... und den pfad aus der datenbank nehmen.

alternativ kannst du das ganze auch auf ein verzeichniss begrenzen. zb so:

PHP:
$downloaddir = './downloads';

if(realpath(dirname(__FILE__).'/'.$downloaddir) == dirname(realpath($downloaddir.'/'.$_GET['datei']))) {
   //alles ok
} else {
  //entweder gibts die datei nicht oder manipulation
}

müsste so ungefähr hinhauen... eventuell könnte es noch probleme mit / am ende vom pfad geben, musste selbst testen.

und noch nen kleiner tipp... ich würde auf produktiv systemen error_reporting immer ausschalten. das gibt zuviele infos preis... damit sind solche sicherheitslücken für jeden sofort ersichtlich.
 
ZeroCCC schrieb:
das sicherste wäre wenn du das ganze datenbankgestützt machen würdest... also für jeden download nen eintrag in der datenbank mit pfad und id. und dem download script nur die id übergeben... und den pfad aus der datenbank nehmen.

alternativ kannst du das ganze auch auf ein verzeichniss begrenzen. zb so:

PHP:
$downloaddir = './downloads';

if(realpath(dirname(__FILE__).'/'.$downloaddir) == dirname(realpath($downloaddir.'/'.$_GET['datei']))) {
   //alles ok
} else {
  //entweder gibts die datei nicht oder manipulation
}

müsste so ungefähr hinhauen... eventuell könnte es noch probleme mit / am ende vom pfad geben, musste selbst testen.

und noch nen kleiner tipp... ich würde auf produktiv systemen error_reporting immer ausschalten. das gibt zuviele infos preis... damit sind solche sicherheitslücken für jeden sofort ersichtlich.


ist echt Prima klappt...
ist euch noch ein fehler aufgefallen?