[PHP] Datei laden (mit Passwort String in URL)

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Halloweenracer, 18. Januar 2012 .

  1. 18. Januar 2012
    Datei laden (mit Passwort String in URL)

    Hallo,

    ich benötige ein kleines Script in php, was mir folgendes erlaubt:

    http://127.0.0.1/10MB.bin?pwd=foo
    http://127.0.0.1/50MB.bin?pwd=foo
    http://127.0.0.1/375MB.bin?pwd=foo

    Wenn ich diese URLs aufrufe und bei ?pwd= das richtige Passwort übergebe, dann soll ich sofort die Datei 10MB, 50MB und 375MB herunterladen können.

    Dass ich bei dieser Variante das Passwort im Klartext über die URL schicke, ist hier kein Problem. Ich brauche dies, um ein Messgerät in einer Laborumgebung testen zu können. Das Messgerät fragt die Datei eben über die o.g. Links ab. Das lässt sich nicht ändern.

    PHP:
    $pwd  $_GET [ "pwd" ];
    Damit hole ich mir das Passwort aus der URL (hier als einfachste Lösung).

    Aber wie schaffe ich es, dass der Download der jeweiligen Datei erst beginnt, wenn das Passwort richtig ist?

    Vielen Dank.

    Mfg
     
  2. 18. Januar 2012
    AW: Datei laden (mit Passwort String in URL)

    Hey,

    das geht mit einer Content-Type Änderung.

    Beispiel:
    Spoiler
    PHP:
    <? php
        $file 
    "test.txt" ;
        
        
    header ( 'Content-Type: application/force-download' );
        
    header ( "Content-Disposition: attachment; filename=" . $file );
            
        
    readfile ( $file );
    ?>
     
  3. 18. Januar 2012
    AW: Datei laden (mit Passwort String in URL)

    Vielen dank schon mal dafür.

    Ich dachte ja an eine einfach Schleife.

    PHP:
    <? php

    $pw 
    $_GET [ "pwd" ];

    if(
    $pw  ==  "foo" )
     {
       
    "Du darfst die angeforderte Datei laden."
      
    } else
          {
       
    "Du darfst die angeforderte nicht Datei laden."
       
    }
       
    ?>
    Ich bin leider in php gar nicht bewandert

    Ich darf ja die Datei nicht extra als Parameter übertragen. Deswegen weiß ich leider nicht, wie ich das mit deinem Hinweis umsetzen soll.
     
  4. 18. Januar 2012
    AW: Datei laden (mit Passwort String in URL)

    mit mod-rewrite an ein script weiterleiten und dort per if-abfrage den parameter auswerten.
     
  5. 18. Januar 2012
    AW: Datei laden (mit Passwort String in URL)

    So, wenn ich per mod-rewrite aus

    http://127.0.0.1/10MB.bin?pwd=foo

    dann http://127.0.0.1/script.php?file=10MB.bin&pwd=foo

    mache, dann sollte ich es ja mit folgender script.php lösen können?

    PHP:
    <? php

    $pwd 
    $_GET [ "pwd" ];

    $file  $_GET [ "file" ];

    if(
    $pwd  ==  "foo"  &&  $file  ==  "10MB.bin" )
       {
        
    $datei  "10MB.bin" ;
        
    $dateiname  basename ( $datei );
        
    $groesse  filesize ( $datei );
        
    header ( "Content-Type: application/force-download" );
        
    header ( "Content-Disposition: attachment; filename=" . $dateiname );
        
    header ( "Content-Length:" . $groesse );
        
    readfile ( $datei );
       } else
       {
       echo 
    "falsches Passwort oder falsche Datei" ;
       }
       
    if(
    $pwd  ==  "foo"  &&  $file  ==  "50MB.bin" )
       {
        
    $datei  "50MB.bin" ;
        
    $dateiname  basename ( $datei );
        
    $groesse  filesize ( $datei );
        
    header ( "Content-Type: application/force-download" );
        
    header ( "Content-Disposition: attachment; filename=" . $dateiname );
        
    header ( "Content-Length:" . $groesse );
        
    readfile ( $datei );
       } else
       {
       echo 
    "falsches Passwort oder falsche Datei" ;
       }
       
    if(
    $pwd  ==  "foo"  &&  $file  ==  "375MB.bin" )
       {
        
    $datei  "375MB.bin" ;
        
    $dateiname  basename ( $datei );
        
    $groesse  filesize ( $datei );
        
    header ( "Content-Type: application/force-download" );
        
    header ( "Content-Disposition: attachment; filename=" . $dateiname );
        
    header ( "Content-Length:" . $groesse );
        
    readfile ( $datei );
       } else
       {
       echo 
    "falsches Passwort oder falsche Datei" ;
       }
       
    ?>
    Mfg
     
  6. 18. Januar 2012
    AW: Datei laden (mit Passwort String in URL)

    ich würde es so machen:

    PHP:
    <? php

    $pwd  
    $_GET [ "pwd" ];
    $file  $_GET [ "file" ];

    $table  = array(
      
    '10MB.bin'   =>  'passwort' ,
      
    '50MB.bin'   =>  'passwort' ,
      
    '375MB.bin'  =>  'passwort'
    );

    if (isset(
    $table [ $file ]) &&  $table [ $file ] ===  $pwd ) { 
      
    $dateiname  basename ( $datei );
      
    $groesse    filesize ( $datei );
      
      
    header ( "Content-Type: application/force-download" );
      
    header ( "Content-Disposition: attachment; filename="  $dateiname );
      
    header ( "Content-Length:"  $groesse );
      
    readfile ( $datei );
      exit;
    }

    print 
    'Datei nicht gefunden oder Passwort falsch' ;
     
  7. 19. Januar 2012
    AW: Datei laden (mit Passwort String in URL)

    kleine erweiterung zu murdoc.
    so kannst du deine dateien auf ordner verteilen.

    ungetestet
    PHP:
    <? php

    $pwd  
    $_GET [ "pwd" ];
    $file  $_GET [ "file" ];

    $table  = array(
      
    '10MB'   => array( 'pwd'  =>  'passwort' 'file'  =>  'dir/10MB.bin' ),
      
    '50MB'   => array( 'pwd'  =>  'passwort' 'file'  =>  'dir/50MB.bin' ),
      
    '375MB'  => array( 'pwd'  =>  'passwort' 'file'  =>  'dir/375MB.bin' )
    );

    if (isset(
    $table [ $file ]) &&  $table [ $file ][ 'pwd' ] ===  $pwd ) { 
      
    $datei  $table [ $file ][ 'file' ];
      
    $dateiname  basename ( $datei );
      
    $groesse    filesize ( $datei );
      
      
    header ( "Content-Type: application/force-download" );
      
    header ( "Content-Disposition: attachment; filename="  $dateiname );
      
    header ( "Content-Length:"  $groesse );
      
    readfile ( $datei );
      exit;
    }

    print 
    'Datei nicht gefunden oder Passwort falsch'
     
  8. 20. Januar 2012
    AW: Datei laden (mit Passwort String in URL)

    Lässt sich das ganze auch ausbauen @onip
    Das man nicht nur auf den lokalen ordner verteilt sondern auf ftp://blabla.de/100mb.bin oder auf http://waynejuckts.de/100mb.bin ?
     
  9. 20. Januar 2012
    AW: Datei laden (mit Passwort String in URL)

    Natürlich ist das möglich, allerdings bedeutet das wiederum Traffic für den bereitstellenden Server, da er aus einer ext. Quelle heraus die Datei erstmal downloaden muss.

    Da halte ich einen Location-Angabe für sinnvoller.
     
  10. 10. April 2012
    AW: Datei laden (mit Passwort String in URL)

    Ich muss leider noch ein mal nachfragen:

    Ich möchte per mod_rewrite aus dieser Url
    Code:
    http://127.0.0.1/10MB.bin?pwd=12ab
    folgende Url machen

    Code:
    http://127.0.0.1/test.php?file=10MB.bin&pwd=12ab
    Mein Ansatz ist ja so:

    Code:
    RewriteEngine On
    RewriteRule ^10MB.bin?pwd=[-0-9a-z]*$ test.php?file=10MB.bin&pwd=$1
    Hat da noch jemand eine Idee zu?
     
  11. 10. April 2012
    AW: Datei laden (mit Passwort String in URL)

    du kannst nen query-string nicht "rewriten"

    Code:
    RewriteEngine On
    RewriteRule ^10MB.bin$ test.php?file=10MB.bin [QSA,L]
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.