#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 + Multi-Zitat Zitieren
#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 ); ?> + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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' ; + Multi-Zitat Zitieren
#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' ; + Multi-Zitat Zitieren
#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 ? + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#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] + Multi-Zitat Zitieren