zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden größere Datein zum Download anbieten (PHP)

Antwort
 
LinkBack Themen-Optionen Ansicht
  #11 (permalink)  
Alt 23.11.2009, 14:33
Benutzerbild von David
float:bergauf;
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 1.539
David sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle Atmosphäre
Standard

Die Datein liegen in einem Unterordner /files


PHP-Code:
<?php
/**
*    Download von diversen Datein nach Passworteingabe
*/
function sendFileToBrowser($filelocation NULL$filename NULL$org_filename ''$ctype 'application/octet-stream'$download FALSE) {
/*
    =============================================================================
    @desc:        Sendet eine Datei zum Herunterladen an den Browser
    @version:    Tue, 30 Sep 2008 17:33:55 +0200
    @changed:    Erweitert um Angabe für den "richtigen" Dateinamen
    =============================================================================
*/

    
if(!file_exists($filelocation $filename)) {
        
        
        exit(
'Datei existiert nicht');
    }
    
// Kein Originalname übergeben? Dann nehmen wir den Dateinamen
    
if($org_filename == ''){
        
$org_filename $filename;
    }

    
// Soll die Datei zum Download angeboten werden?
    
if($download === TRUE){
        
header('Pragma: public');
        
header('Expires: 0');
        
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        
header('Content-Transfer-Encoding: binary');
        
header('Content-Disposition: attachment; filename=' $org_filename ';');    
    }

    
header('Content-Type: ' $ctype);
    
header('Content-Length: ' filesize($filelocation $filename));
    
//    readfile($filelocation . $filename);

    
    
    
$file fopen($filelocation $filename"r");

    while(!
feof($file) and (connection_status()==0)) {
        print(
fread($file1024*8));
        
flush();
    }
    
fclose($file);
    
    exit();


$password '...';

$path dirname(__FILE__);
$path preg_replace('/\/$/','',$path);
define('FILE_PATH',$path.'/files/');

@
ini_set('session.use_cookies',0);
@
ini_set('session.use_trans_sid',1);

session_start();

if((!isset(
$_SESSION['loggedin']) || $_SESSION['loggedin'] === false) && $_SERVER['REQUEST_METHOD'] !== 'POST') {

    
header('Content-type: text/html;charset=iso-8859-1');    
    
?><!DOCTYPE html>
        <meta charset="ISO-8859-1">
        <meta name="robots" content="noindex,nofollow" />
        
        <title>Bitte Anmelden</title>
        
        <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
            
            <fieldset>
                <label for="password">Passwort</label><br />
                <input type="password" name="password" id="password" /><br />
                <input type="submit" name="submit" value="Las mich rein" />
            </fieldset>
        </form>
<?php 

    
exit();
}

if(
$_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['submit'])) {
    
    if( 
md5($_POST['password']) === $password) {
        
        
$_SESSION['loggedin'] = true;
    }
    
    else { 
        
header('Content-type: text/html;charset=iso-8859-1'); ?>
        
        <!DOCTYPE html>
        <meta charset="ISO-8859-1">
        <meta name="robots" content="noindex,nofollow" />
        
        <title>Falsches Passwort</title>
        
        <p>Das Passwort stimmt leider nicht</p>
    
    <?php exit();
    }
}

if(
$_SESSION['loggedin']) {
    
    if(!isset(
$_GET['f']) || $_GET['f'] == '') { 
        
        
header('Content-type: text/html;charset=iso-8859-1'); ?>
        
        <!DOCTYPE html>
        <meta charset="ISO-8859-1">
        <meta name="robots" content="noindex,nofollow" />
        
        <title>Datei auswählen</title>
        
        <p>Was darfs denn Sein?</p>

            <ul>
                <li><a href="<?php echo $_SERVER['PHP_SELF'];?>?f=1">Bilder vom Turnier 09 (.zip/53 MB)</a></li>
                <li><a href="<?php echo $_SERVER['PHP_SELF'];?>?f=2">Video „10 Jahre Verein“ (.avi/divx/ 70 MB)</a></li>
                <li><a href="<?php echo $_SERVER['PHP_SELF'];?>?f=3">Video „10 Jahre Verein“ (.wmv/88 MB)</a></li>
                <li><a href="<?php echo $_SERVER['PHP_SELF'];?>?f=4">Testbild (.jpeg)</a></li>
            </ul>
            
            <p><a href="<?php echo $_SERVER['PHP_SELF'];?>?f=logout">Abmelden</a></p>
                
    <?php 
    
        
exit();
    }
    
    else {
        
$file = array();
        switch (
$_GET['f']) {
            
            case 
'1'$file['name'] = 'turnier09.zip';
                        
$file['mimetype'] = 'application/zip';
                break;
            case 
'2'$file['name'] = '10_jahre_verein.avi';
                        
$file['mimetype'] = 'video/avi';
                break;
            case 
'3'$file['name'] = '10_jahre_verein.wmv';
                        
$file['mimetype'] = 'video/X-ms-wmv';
                break;
            
            case 
'4'$file['name'] = 'test.jpeg';
                        
$file['mimetype'] = 'image/jpeg';
                break;
                
            default: 
$file['name'] = false;
                break;
                
            case 
'logout':    
                
$_SESSION['loggedin'] = false;
                
session_destroy();
                exit(
'Danke für Deinen Besuch!');           
                
        }
        
        if(!
$file['name'] || !file_exists(FILE_PATH.$file['name'])) { 
            
header('HTTP/1.1 404 Not Found');
            
header('Content-type: text/html;charset=iso-8859-1'); ?>
            <!DOCTYPE html>
            <meta charset="ISO-8859">
            <meta name="robots" content="noindex,nofollow" />
        
            <title>Datei nicht gefunden</title>
            
            <p><strong>Sorry, die Datei existiert hier nicht.</strong></p>
            
            <ul>
               <!-- hier kommt noch mal die Linkliste -->
            </ul>
            
            <p><a href="<?php echo $_SERVER['PHP_SELF'];?>?f=logout">Abmelden</a></p>
       
       <?php
            
            
exit();
        }
        
        else {
            
                
sendFileToBrowser(FILE_PATH$file['name'], '''application/octet-stream',TRUE);
            
        }
    }
}
?>
__________________
http://dnaber.de
Mit Zitat antworten
Sponsored Links
  #12 (permalink)  
Alt 23.11.2009, 15:08
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.416
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Boris eine Nachricht über ICQ schicken Boris eine Nachricht über MSN schicken Boris eine Nachricht über Skype™ schicken
Standard

Teste doch mal das Skript, indem du die Funktion manuell aufrufst inkl. allen Pfaden etc. ... das mit dem ermitteln des Pfades ist mir suspekt bei dir

Ich mach das immer über $_SERVER['DOCUMENT_ROOT'] . '/files/' (für deinen Fall).
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
Sponsored Links
  #13 (permalink)  
Alt 23.11.2009, 15:32
Benutzerbild von David
float:bergauf;
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 1.539
David sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle Atmosphäre
Standard

Keine Ahnung, warum ich hier dirname() verwende, ich nutze sonst auch $_SERVER. Aber daran liegt es nicht. Allerdings hat mich deine Idee das Problem eingrenzen lassen.

Rufe ich die Funktion auf, funktioniert es einwandfrei. Das Problem scheint an der Session zu hängen. Wenn ich die Funktion nach session_start() aufrufe, geht es nicht mehr. Seltsam, denn Cookies dürfte es ja keine Senden.

Edit: es liegt an 'session.use_trans_sid'. Das muss auf 0 gesetzt werden!
__________________
http://dnaber.de

Geändert von David (23.11.2009 um 15:38 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 23.11.2009, 15:44
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.416
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Boris eine Nachricht über ICQ schicken Boris eine Nachricht über MSN schicken Boris eine Nachricht über Skype™ schicken
Standard

Hm, eigentlich dürfte session_start kein Problem damit haben, danach nochmals mit header() eine Datei zu schicken (sowas mach ich öfter). Hmm ...
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #15 (permalink)  
Alt 23.11.2009, 15:48
Benutzerbild von David
float:bergauf;
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 1.539
David sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle Atmosphäre
Standard

Es liegt an der transparenten SID Behandlung, die irgendwas am Output-Verhalten ändert. Wenn ich es auf '0' setze, geht es.
__________________
http://dnaber.de
Mit Zitat antworten
  #16 (permalink)  
Alt 23.11.2009, 15:50
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.416
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Boris eine Nachricht über ICQ schicken Boris eine Nachricht über MSN schicken Boris eine Nachricht über Skype™ schicken
Standard

Na dann
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #17 (permalink)  
Alt 23.11.2009, 16:02
Benutzerbild von David
float:bergauf;
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 1.539
David sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle Atmosphäre
Standard

Danke für das Script und die Hilfe!
Ist das dein Werk?
__________________
http://dnaber.de
Mit Zitat antworten
  #18 (permalink)  
Alt 23.11.2009, 16:24
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.416
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Boris eine Nachricht über ICQ schicken Boris eine Nachricht über MSN schicken Boris eine Nachricht über Skype™ schicken
Standard

Zum Teil, ja ... ich hab das irgendwo mal nachgeschlagen, übernommen und für meine Bedürfnisse umgeschrieben.
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
php Seiten online stellen online Serveradministration und serverseitige Scripte 7 27.03.2009 12:13
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 18:09
Mp3 zum Download anbieten, Wie? Ricardando (X)HTML 24 03.01.2008 20:31
Passwortabfrage + Download über PHP ONeill Serveradministration und serverseitige Scripte 4 21.11.2006 18:04
Download auf eigener Seite anbieten Adenauer Serveradministration und serverseitige Scripte 5 12.03.2006 11:09


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 Uhr.