peterha
Goto Top

html Submit Box für bestimmten Download

Hallo Freunde,

kann mir jemand von euch helfen einen Code zu bauen der folgendes macht: Eine kleine Textbox und daneben ein Submit oder halt Download Button. in das feld soll man z.B. eine Zahl eintragen (das ist der download name) z.B. 30 dann klickt man auf download und der download startet bzw. der speichern unter dialog kommt.

damit möchte ich umgehen auf der seite zig links zu haben... die ja eh nur auf die zahlen verweisen.

Wie geht sowas? habe schon recht viel gegooglet... wär cool wenn jemand ne idee hat face-smile

Vielen Dank und schönes WE!

Gruß
Christoph

Content-Key: 103479

Url: https://administrator.de/contentid/103479

Printed on: April 25, 2024 at 01:04 o'clock

Member: Arano
Arano Dec 07, 2008 at 13:05:27 (UTC)
Goto Top
Moin,

jo ich habe da ne Idee und es mal eben schnell getippt:
index.php
<?php
 if(isset($_POST['d_id']) && is_numeric($_POST['d_id'])){  
  $d_id  = (int)$_POST['d_id'];  
  $d_dir = './files/';  
  switch($d_id){
   case 1: $d_file='A_Trip_to_elsewhere-1920x1440.jpg'; $d_ct = 'image/jpeg'; break;  
   case 2: $d_file='Enchanted_Forest-1600x1200.jpg';    $d_ct = 'image/jpeg'; break;  
   case 3: $d_file='Fantasia-1600x1200.jpg';            $d_ct = 'image/jpeg'; break;  
   case 4: $d_file='xecho.exe';                         $d_ct = 'application/octet-stream'; break;  
  }
  header("Content-Type: ".$d_ct);                               // Übermittelt den Content-Type  
  header("Content-Disposition: attachment; filename=".$d_file); // Übermittelt, was heruntergeladen werden soll  
  header("Content-Length: ".filesize($d_dir.$d_file));          // Übermittelt die Größe der Datei  
  readfile($d_dir.$d_file);
 }
?>
<html>
 <head>
  <title>Filedownload fuer peterha</title>
 </head>
 <body>
  
  <form action="./index.php" method="POST">  
   <fieldset>
    <legend>Downloadnummer eingeben:</legend>
    <input type="text" name="d_id" value=""><br>  
    <input type="submit" name="get_dl_btn" value="Downloaden">  
   </fieldset>
  </form>
  
 <body>
</html>
Habe natürlich im selben Verzeichnis den Ordner "fiels" der die entsprechenden Dateien enthält.

Ebenfalls ein schönes Wochenende, oder was davon noch übrig ist ;)

~Arano

EDIT:
Die Content-Typen habe ich hier her : http://www.selfphp.de/kochbuch/kochbuch.php?code=37
Member: peterha
peterha Dec 07, 2008 at 13:13:50 (UTC)
Goto Top
WOW hammer geil VIELEN DANK!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Wenn ich irgendwas für dich tun kann sag bescheid. Vielen Dank nochma face-smile)))))))

Gruß
Christoph
Member: peterha
peterha Dec 07, 2008 at 14:04:01 (UTC)
Goto Top
ich habe es jetzt mal angepasst. eine frage: was muss ich tun damit er nicht auf dem server irgendwo im internet die datei sucht (die übrigens wirklich nur zahlen sind - also ohne datei endung.) sucht sondern bei mir zu hause auf dem server, den ich dyn dns nach außen mappe: ftpuser.mine.nu


<?php
if(isset($_POST['d_id']) && is_numeric($_POST['d_id'])){
$d_id = (int)$_POST['d_id'];
$d_dir = 'http://www.ftpuser.mine.nu/download/';
switch($d_id){
case 1: $d_file='1'; $d_ct = 'application/octet-stream'; break;
case 2: $d_file='2'; $d_ct = 'application/octet-stream'; break;
case 3: $d_file='3'; $d_ct = 'application/octet-stream'; break;
case 4: $d_file='4'; $d_ct = 'application/octet-stream'; break;
}
header("Content-Type: ".$d_ct); Übermittelt den
Content-Type
header("Content-Disposition: attachment; filename=".$d_file);
Übermittelt, was
heruntergeladen werden soll
header("Content-Length: ".filesize($d_dir.$d_file)); // Übermittelt die Größe der
Datei
readfile($d_dir.$d_file);
}
?>
<html>
<head>
<title>Download</title>
</head>
<body>

<form action="./index.php" method="POST">
<fieldset>
<legend>Downloadnummer eingeben:</legend>
<input type="text" name="d_id" value=""><br>
<input type="submit" name="get_dl_btn" value="I´m cool!">
</fieldset>
</form>

<body>
</html>
Mitglied: 36831
36831 Dec 07, 2008 at 14:10:58 (UTC)
Goto Top
Moin,

wie du oben im Code sehen kannst, ist dort ein lokaler Ordner auf dem Server angegeben. Da php auf dem Server ausgeführt wird, solltest du diesen auf nicht in einer Internet-URL, sondern im lokalen Format (ja nach verwendetem Betriebssystem) angeben.

Unterordner namens "files":
./files/
Ordner "files" direkt auf root-verzeichnis-ebene des Webservers:
/files/
Ordner "files" auf der selben Ebene wie der Ordner mit deiner index.php:
../files/

VW
Member: peterha
peterha Dec 07, 2008 at 14:48:00 (UTC)
Goto Top
hmhm danke. aber es handelt sich bei den dateien um recht große. so viel webspace habe ich ja nicht. das ist auch ein grund warum ich jetzt nen server zu hause laufen habe.

wenn man den ordner anpasst müsste es doch gehen oder??

$d_dir = 'http://www.mein-server.de/download-ordner/';

zum beispiel

liege ich da flasch??
also ich hätte es gern das das php auf dem 1und1 server läuft und dann aber den download von mir zu hause startet...
Mitglied: 36831
36831 Dec 07, 2008 at 14:57:10 (UTC)
Goto Top
Wenn du "recht große" Dateien von zuhause herunterladen lassen möchtest, hast du hoffentlich eine Standleitung mit min. 2 MBit/s Upload?

http://www.mein-server.de/download-ordner/
sollte eigentlich zumindest für den Download funktionieren. Ich weiß allerdings nicht, was
  header("Content-Disposition: attachment; filename=".$d_file); // Übermittelt, was heruntergeladen werden soll   
  header("Content-Length: ".filesize($d_dir.$d_file));          // Übermittelt die Größe der Datei  
davon hält, da ich kein PHP-Spezialist bin.

VW
Member: Arano
Arano Dec 07, 2008 at 15:04:12 (UTC)
Goto Top
Das hättest mal gleich sagen sollen !

Nein, du kannst doch nicht ernsthaft erwarten, das ich mit dem PHP auf meinem Rechner (InternetServer) Zugriff auf DEINEN bekomme !?
Das wäre ja ein riesen Sicherheitsloch usw. ect. pp.

Da es sich um eine URL handelt auf die weitergeleitet werden soll, kann mans so machen:
<?php
 if(isset(...) && is_numeric(...)){
  $d_id = (int)$_POST['d_id'];  
  header('Location: http://deine-adresse/'.$d_id);  
 }
?>
<!-- hier weider das formular -->


~Arano
Member: peterha
peterha Dec 07, 2008 at 15:27:57 (UTC)
Goto Top
nein so wie du sagst hab ich das nicht erwartet. die dateien sind bei zu hause auf dem server und bereits von außen zu erreichen: http://www.ftpuser.mine.nu/download/datei

und auf dem 1und1 server soll das php sein im ordner download (http://www.ftpuser.mine.nu/download/) gucken ob z.b. eine datei 4711 da ist. dann download.

meine internetleitung ist 16 mbit ADSL dynamisch Ich hab ca. 130 KB Upload und 2 MB Download. reicht für meine zwecke. mit größeren dateien meine ich lediglich einige hunder MB. nicht mehr.

ok ich probiere es mal damit. mom

vielen dank schon mal.
Member: peterha
peterha Dec 07, 2008 at 15:46:05 (UTC)
Goto Top
also jetzt kommt diese felhermeldung: Parse error: syntax error, unexpected '.', expecting T_VARIABLE or '$' in /homepages/3/d265360358/htdocs/test.php on line 2


und das von dieser PHP datei:

<?php
if(isset(...) && is_numeric(...)){
$d_id = (int)$_POST['d_id'];
header('Location: http://ftpuser.mine.nu/download/';.$d_id);
}
case 1: $d_file='A_Trip_to_elsewhere-1920x1440.jpg'; $d_ct = 'image/jpeg'; break;
case 2: $d_file='Enchanted_Forest-1600x1200.jpg'; $d_ct = 'image/jpeg'; break;
case 3: $d_file='Fantasia-1600x1200.jpg'; $d_ct = 'image/jpeg'; break;
case 4: $d_file='xecho.exe'; $d_ct = 'application/octet-stream'; break;
}
header("Content-Type: ".$d_ct); Übermittelt den Content-Type
header("Content-Disposition: attachment; filename=".$d_file);
Übermittelt, was heruntergeladen werden soll
header("Content-Length: ".filesize($d_dir.$d_file)); // Übermittelt die Größe der Datei
readfile($d_dir.$d_file);
}
?>
<html>
<head>
<title>Filedownload fuer peterha</title>
</head>
<body>

<form action="./index.php" method="POST">
<fieldset>
<legend>Downloadnummer eingeben:</legend>
<input type="text" name="d_id" value=""><br>
<input type="submit" name="get_dl_btn" value="Downloaden">
</fieldset>
</form>

<body>
</html>


ich weiß... ich hab da kaum ahnung von... will auch nicht nerven... aber was mache ich da falsch??

gruß
Christoph
Member: Arano
Arano Dec 07, 2008 at 17:44:33 (UTC)
Goto Top
Ersetzte Zeile zwei mit dieser hier:
if(isset($_POST['d_id']) && is_numeric($_POST['d_id'])){   
Wenn du die beiden Zeilen nun vergleichst, wird dir auffallen, das ich es mir beim zweiten mal erspart habe alles zu tippen und mit "..." abgekürzt habe.

Kaum Ahnung zu haben ist nicht weiter schlimm, die hat uns allen mal gefehlt...

~Arano
Member: peterha
peterha Dec 07, 2008 at 18:59:10 (UTC)
Goto Top
hey

momentan kommt diese fehlermeldung: Parse error: syntax error, unexpected T_CASE in /homepages/3/d265360358/htdocs/admin.php on line 6

das file liegt unter
http://www.kaeferkreativ.de/admin.php

ist sonst noch downloadbar http://www.kaeferkreativ.de/admin.rar

die downloaddateien liegen jetzt (VERSCHLÜSSELT) unter http://ftpuser.mine.nu/download/4711

hast du da noch ne idee??

eventuell kannst du es mir ja per mail schicken wenn du so nett bist face-smile ich würde mich sehr freuen. serioes@online.de

Gruß
Christoph
Mitglied: 36831
36831 Dec 07, 2008 at 19:09:17 (UTC)
Goto Top
<?php
 if(isset($_POST['d_id']) && is_numeric($_POST['d_id'])){  
  $d_id = (int)$_POST['d_id'];  
  header('Location: http://deine-adresse/'.$d_id);  
 }
?>
<html>
<head>
<title>Filedownload fuer peterha</title>
</head>
<body>

<form action="./index.php" method="POST">  
<fieldset>
<legend>Downloadnummer eingeben:</legend>
<input type="text" name="d_id" value=""><br>  
<input type="submit" name="get_dl_btn" value="Downloaden">  
</fieldset>
</form>

<body>
</html>
Das sollte funktionieren. Die "Case"-Angaben brauchst du nicht mehr. Die werden ohne "Switch"-Anweisung auch nicht verstanden, deshalb der Fehler.

MfG,
VW

PS: Ungetestet.
Member: peterha
peterha Dec 07, 2008 at 19:30:46 (UTC)
Goto Top
ok. man findet es jetzt unter www.käferkreativ.de/cool.php wenn ich ne zahl eingebe kommt 404 file not found. Momentan sieht der code so aus. wo ist denn nur der fehler????

<?php
if(isset($_POST['d_id']) && is_numeric($_POST['d_id'])){
$d_id = (int)$_POST['d_id'];
header('Location: http://ftpuser.mine.nu/download/';.$d_id);
}
?>
<html>
<head>
<title>Filedownload fuer peterha</title>
</head>
<body>

<form action="./index.php" method="POST">
<fieldset>
<legend>Downloadnummer eingeben:</legend>
<input type="text" name="d_id" value=""><br>
<input type="submit" name="get_dl_btn" value="Downloaden">
</fieldset>
</form>

<body>
</html>
Mitglied: 36831
36831 Dec 07, 2008 at 19:38:32 (UTC)
Goto Top
Ich verwende als Programm Notepad++ und sehe daher recht schnell, dass ab dem
header('Location: http://ftpuser.mine.nu/download/&#039
alles als Text übergeben wird. Das "&#039;" muss durch ein Einfaches Anführungszeichen ' ersetzt werden.

Es wäre außerdem sehr praktisch, wenn du geposteten Quelltext in einen Code-Tag (code type=php) packst, den du unter der Datei mit einem (/code) abschließt. Dann hast du auch farbliche Markierungen und wir können uns direkt auf Zeilen-Nrn. beziehen.
Dann musst du statt den runden die gepfeilten Klammern verwenden.

VW
Member: peterha
peterha Dec 07, 2008 at 19:44:35 (UTC)
Goto Top
mhmh ich hab mich auch gewundert.... das kommt nur wenn ich das reinkopiere!!
im orig test ist es nicht drin.

(code type=php)
<?php
if(isset($_POST['d_id']) && is_numeric($_POST['d_id'])){
$d_id = (int)$_POST['d_id'];
header('Location: http://ftpuser.mine.nu/download/';.$d_id);
}
?>
<html>
<head>
<title>Filedownload fuer peterha</title>
</head>
<body>

<form action="./index.php" method="POST">
<fieldset>
<legend>Downloadnummer eingeben:</legend>
<input type="text" name="d_id" value=""><br>
<input type="submit" name="get_dl_btn" value="Downloaden">
</fieldset>
</form>

<body>
</html>
(/code)
Mitglied: 36831
36831 Dec 07, 2008 at 19:55:54 (UTC)
Goto Top
fast ok....
Zitat von @36831:
Dann musst du statt den runden die gepfeilten Klammern verwenden.
Das hast du wohl gerade mal übersehen?
Siehe

VW
Member: peterha
peterha Dec 07, 2008 at 20:14:20 (UTC)
Goto Top
jelernt face-smile

<?php
 if(isset($_POST['d_id']) && is_numeric($_POST['d_id'])){  
  $d_id = (int)$_POST['d_id'];  
  header('Location: http://ftpuser.mine.nu/download/'.$d_id);  
 }
?>
<html>
<head>
<title>Filedownload fuer peterha</title>
</head>
<body>

<form action="http://www.kaeferkreativ.de/index.php" method="POST">  
<fieldset>
<legend>Downloadnummer eingeben:</legend>
<input type="text" name="d_id" value=""><br>  
<input type="submit" name="get_dl_btn" value="Downloaden">  
</fieldset>
</form>

<body>
</html>
Mitglied: 36831
36831 Dec 07, 2008 at 20:24:12 (UTC)
Goto Top
Wie heißt die Datei selber auf dem Server? Ist die wirklich unter http://www.kaeferkreativ.de/index.php erreichbar?
Ansonsten musst du Zeile 13 anpassen.

Allgemeingültig wäre z.B.
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
als Zeile 13 in der von dir geposteten Datei.

VW
Member: peterha
peterha Dec 07, 2008 at 20:44:39 (UTC)
Goto Top
die dateien heißen nur wie zahlen und liegen bei mir zu hause.

Namen der Files: also 1 oder 2 oder 3 OHNE datei endungen. das kannst du unter http://ftpuser.mine.nu/download/ auch sehen,

HAB DIE ZEILE ERSETZT !!!!!!!!! ES GEHT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

DANKE AN ALLE!!!!!!!!
Mitglied: 36831
36831 Dec 07, 2008 at 20:48:06 (UTC)
Goto Top
Zitat von @peterha:
die dateien heißen nur wie zahlen und liegen bei mir zu hause.

Namen der Files: also 1 oder 2 oder 3 OHNE datei endungen. das kannst
du unter http://ftpuser.mine.nu/download/ auch sehen,

Ich meinte zwar eigentlich die php-Datei, die das Formular enthält, aber, wenn es jetzt geht, geht's ja auch face-big-smile

Problem war demnach, dass das Formula beim Abschicken auf eine andere Datei verwiesen hat, die aber nicht existierte.

Dann bitte den Beitrag noch als gelöst markieren.

VW