php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 24-07-2010, 13:48
2Bad4You
 Registrierter Benutzer
Links : Onlinestatus : 2Bad4You ist offline
Registriert seit: Jun 2007
Beiträge: 101
2Bad4You ist zur Zeit noch ein unbeschriebenes Blatt
2Bad4You eine Nachricht über ICQ schicken
Standard Video Datei Download

Hey,

Ich habe ein Problem damit Video Files zum Download anzubieten. Wenn ich z.b ein .avi File downloaden möchte, öffnet sich der Downloaddialog des Browsers und die Dateigröße wird korrekt angezeigt. Nach dem Download ist das Video allerdings dann nur 0kb groß und läßt sich nicht abspielen. Das Problem tritt bwi .avi oder .divx etc files auf. Mp3 Files, txt dateien, word dokumente etc lassen sich problemlos downloaden. Der Download wird folgendermaßen eingeleitet:
PHP-Code:
$filesize filesize($folder."/".$_GET['filename']);    // Get Filesize
    
// Set Headers
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename=".basename($_GET['filename'])."");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header("Content-Length: ".$filesize."");
    
// Send Output to Browser
flush();
readfile($folder."/".$_GET['filename']);
    
// Exit the Script
exit; 
Klappt ja auch soweit, nur bei Videodatein halt nicht. Gibt es bei diesen irgendwas besonders zu beachten oder woran könnte das liegen?

lg
2Bad4You

Geändert von 2Bad4You (24-07-2010 um 16:04 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 24-07-2010, 14:30
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Texteditor nehmen, runtergeladene Datei damit öffnen - Fehlermeldungen?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 24-07-2010, 16:03
2Bad4You
 Registrierter Benutzer
Links : Onlinestatus : 2Bad4You ist offline
Registriert seit: Jun 2007
Beiträge: 101
2Bad4You ist zur Zeit noch ein unbeschriebenes Blatt
2Bad4You eine Nachricht über ICQ schicken
Standard

Komplett leer das Dokument. Hatte mich oben auch vertan, das File ist nich 1kb sondern 0kb groß. Mit Editor oder Wordpad geöffnet = weiße Seite. Also komplett leer. hmm
Mit Zitat antworten
  #4 (permalink)  
Alt 24-07-2010, 16:42
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Mit welchem Browser testest du - IE?
Der ist bei solchen Sachen immer etwas zickig, was die Caching-Header angeht.
Schmeiß' die drei header-Zeilen vor der letzten mal raus.

Btw., dass das Script in der Form eine scheunentorgroße Sicherheitslücke aufreißt, weil man darüber sämtliche Dateien von deinem Webspace herunterladen kann, ist dir hoffentlich bewusst.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 24-07-2010, 16:56
2Bad4You
 Registrierter Benutzer
Links : Onlinestatus : 2Bad4You ist offline
Registriert seit: Jun 2007
Beiträge: 101
2Bad4You ist zur Zeit noch ein unbeschriebenes Blatt
2Bad4You eine Nachricht über ICQ schicken
Standard

Ich habe es mit dem Firefox versucht. Im IE8 ist genau das selbe problem. Auch das rausschmeißen der 3 Header Zeilen bringt keine Änderung ...

Danke für den Hinweis zwecks Sicherheit. Ich habe etwas weiter oben diese Abfrage drin:
PHP-Code:
// Check if $_GET Parameter for Folder isset
if(isset($_GET['folder']) && ($_GET['folder'] != ""))
{
    
$folder DOWNLOAD_FOLDER."/".$_GET['folder']; // If it is set, bind Variable to $_GET folder key
}
else
{
    
$folder DOWNLOAD_FOLDER// If it is not set, bind Variable to Download Folder specified in Config
}
    
// Check IF the $_GET Parameter with the filename is correct
if(!isset($_GET['filename']) || ($_GET['filename'] == "") || (!is_file($folder."/".$_GET['filename'])))
{
    echo 
"An Error occured. Please go back to the Main Menu. Use the Link below for this.";
    echo 
"<br />";
    echo 
"<a href='index.php?action=listFiles'>Go Back to the Main Page.</a>";
    die();

Dadruch sollte es doch nicht möglich sein beliebige Dateien über das Script zu downloaden oder? Es werden ja nur Dateien zugelassen die in einem bestimmten Ordner liegen. Oder hab ich da noch irgendwas vergessen? Bin für jeden Tipp dankbar.

Geändert von 2Bad4You (24-07-2010 um 17:05 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 24-07-2010, 17:07
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Na dann kommentiere erst mal alle Header aus, und schau ob Fehlermeldungen angezeigt werden.

error_reporting auf E_ALL und display_errors auf on hast du ja hoffentlich?


Und nein, deine Sicherheitsprüfung reicht selbstverständlich noch nicht aus, da man aus dem angegebenen Verzeichnis immer noch ganz leicht heraus kommt.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 24-07-2010, 17:25
2Bad4You
 Registrierter Benutzer
Links : Onlinestatus : 2Bad4You ist offline
Registriert seit: Jun 2007
Beiträge: 101
2Bad4You ist zur Zeit noch ein unbeschriebenes Blatt
2Bad4You eine Nachricht über ICQ schicken
Standard

Ja Error Reporting ist an und display Errors auch. Wenn ich die Header auskommentiere und auf einen Download Klicke kommt eine weiße Seite und es werden keine Fehler angezeigt.
Der Downloadteil des Scriptes sieht jetzt so aus:
PHP-Code:
if($action == "downloadFile")
{
// Check Access Mode. If private -> check if logged_in 
// isset to 1 and check if Username is correct, again. For safety reasons.
if(ACCESS_MODE == "private" && (!isset($_SESSION['logged_in'])) 
|| ((
ACCESS_MODE == "private") &&  ($_SESSION['logged_in'] == "0")) 
|| ((
ACCESS_MODE == "private") && (!in_array($_SESSION['username'], $usernamestrue))))     
{
    
header("Location: index.php?action=login");
}
    
// Check if $_GET Parameter for Folder isset
if(isset($_GET['folder']) && ($_GET['folder'] != ""))
{
    
$folder DOWNLOAD_FOLDER."/".$_GET['folder']; 
       
// If it is set, bind Variable to $_GET folder key
}
else
{
    
$folder DOWNLOAD_FOLDER
       
// If it is not set, bind Variable to Download Folder specified in Config
}
    
// Check IF the $_GET Parameter with the filename is correct
if(!isset($_GET['filename']) || ($_GET['filename'] == "") || (!is_file($folder."/".$_GET['filename'])))
{
    echo 
"An Error occured. Please go back to the Main Menu. Use the Link below for this.";
    echo 
"<br />";
    echo 
"<a href='index.php?action=listFiles'>Go Back to the Main Page.</a>";
    die();
}
    
$filesize filesize($folder."/".$_GET['filename']);    // Get Filesize
    
// Set Headers
//header('Content-Description: File Transfer');
//header('Content-Type: application/octet-stream');
//header("Content-Disposition: attachment; filename=".$_GET['filename']."");
//header('Content-Transfer-Encoding: binary');
//header('Expires: 0');
//header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
//header('Pragma: public');
//header("Content-Length: ".$filesize."");
    
// Send Output to Browser
flush();
readfile($folder."/".$_GET['filename']);
    
// Exit the Script
exit;

Ich weiß nicht woran das liegen soll da es ja bei allen anderen Files auch funktioniert. Habs mal mit einem .wmv File getestet grade und hab festgestellt das es damit z.b auch geht. Also er mag also nur .avi oder .divx nicht.

Könntest du bitte mal ein Beispiel geben wie man noch leicht aus dem Verzeichnis rauskommt? Ich hab eben mal was getestet in einen anderen Pfad zuspringen aber das hat nicht geklappt. Deswegen dachte ich das wäre dagegen abgesichert. Wäre dir für ein Beispiel sehr dankbar.

Geändert von 2Bad4You (24-07-2010 um 17:33 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 24-07-2010, 17:33
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Nimm mal probehalber anstelle von
PHP-Code:
flush();
readfile($folder."/".$_GET['filename']);
    
// Exit the Script
exit; 
ein
PHP-Code:
$file file_get_contents($folder."/".$_GET['filename']);
echo 
$file
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #9 (permalink)  
Alt 24-07-2010, 17:43
2Bad4You
 Registrierter Benutzer
Links : Onlinestatus : 2Bad4You ist offline
Registriert seit: Jun 2007
Beiträge: 101
2Bad4You ist zur Zeit noch ein unbeschriebenes Blatt
2Bad4You eine Nachricht über ICQ schicken
Standard

Ahhhh damit kommt man der Sache schon näher. Jetzt steht eine Fehlermeldung drin in dem gedownloadeten File. Ich habe gar nicht mehr dran gedacht dass das ganze eventuell kein Datei Problem sondern ein Memory Problem sein kann. Folgende Fehlermeldung steht nämlich jetzt drin:
Zitat:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 731727872 bytes) in G:\xampp\htdocs\filesbay\index.php on line 359
Daran hatte ich gar nicht mehr gedacht dass es da zu Problemen kommen kann ... Danke
Mit Zitat antworten
  #10 (permalink)  
Alt 24-07-2010, 18:13
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von 2Bad4You Beitrag anzeigen
Der Downloadteil des Scriptes sieht jetzt so aus:
PHP-Code:
if($action == "downloadFile"
Und wo kommt $action her?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #11 (permalink)  
Alt 24-07-2010, 18:57
2Bad4You
 Registrierter Benutzer
Links : Onlinestatus : 2Bad4You ist offline
Registriert seit: Jun 2007
Beiträge: 101
2Bad4You ist zur Zeit noch ein unbeschriebenes Blatt
2Bad4You eine Nachricht über ICQ schicken
Standard

$action kommt aus dem $_GET Array.
PHP-Code:
if(!isset($_GET['action']) || ($_GET['action'] == ""))        // If action Atribute is empty set $action to login
{
    
$action "login";    // If Empty set to default: login
}
else
{
    
$action $_GET['action']; // IF Not Empty set to provided Action

Habe nicht das komplette Script gepostet, sondern nur den für den download relevanten Teil.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datei download erwin_lier PHP Developer Forum 5 10-10-2008 13:02
Video Upload/Download nur bei Login pendragon302 BRAINSTORMING PHP/SQL/HTML/JS/CSS 3 14-05-2007 13:42
Video Streaming Download Bereich kaguya BRAINSTORMING PHP/SQL/HTML/JS/CSS 0 14-02-2006 15:54
Datei Download heiniger PHP Developer Forum 6 24-02-2004 17:10
[Video] screenshot von rm-datei hansi Grafik / Design / Flash ... 2 29-07-2003 03:52

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:10 Uhr.