Datei-Upload; wo landen die Dateien ?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Datei-Upload; wo landen die Dateien ?

    Hallo,

    ich habe hier ein Skript aus dem Internet und versuche gerade den zu verstehen.
    Es geht darum Dateien auf einen Webserver zu speichern.

    Nun habe ich das mit xammp und einer Beispieldatei getstet und es schient sogar zu funktionieren.
    Ist jetzt nur die Frage wo ich den Pfad von dem Ordner einstelle indem die Dateuen hochgeladen werden sollen.
    Ich poste euch mal die Config-und die Hauptdatei.

    Quellcode

    1. <?php
    2. $pfad = "/upload/up"; # relative Pfad zu dem Ordner der hochgeladenen Dateien
    3. $pfad2 = "../up"; # Uploadordner immer mit ../ davor
    4. $up_chmod = 0755; # Chmodrechte das up Ordners 0755 oder 0777
    5. $upmail = 0; # eMail nach Upload ja = 1 / nein = 0
    6. $email = "post@arne-home.de"; # wenn eMail nach Upload ja, dann eMail an die Adresse
    7. $dateien = 5; # Anzahl der Uploadfelder
    8. $b_min = 10; # minimale Bytes
    9. $b_max = 524288; # maximale Bytes / 1024 Bytes = 1 KB / 1024 KB = 1 MB
    10. $pw = 1234; # Passwort
    11. $upw = 0; # Passwort ja = 1 / nein = 0
    12. $inhalt = 1; # Inhalt des Uploadornders anzeigen ja = 1 / nein = 0
    13. $dl_link = 0; # hochgeladene Dateien im up Ordner können verlinkt werden ja = 1 / nein = 0
    14. $dl_endung = 1; # bestimmte Dateiendungen zulassen ja = 1 / nein = 0
    15. $filetypes = array('jpg','gif','png'); # Zugelassene Upload-Dateiformate
    16. $dateien_w = 0; # Dateien überschreiben ja = 1 / nein = 0
    17. # Bei nein (0) wird ein Unixtimekürzel nach den Dateinamen angehängt.
    18. $li_bild = "pupf_03.png"; # Listenbild im Inhalt / weitere im Ordner /img
    19. $progress = "ladebalken.gif"; # Bild beim Hochladen / weitere im Ordner /img
    20. $dl_gesamt = 1; # Gesamtgrösse der Dateien anzeigen ja = 1 / nein = 0
    21. $admin = 0; # Adminlink anzeigen ja = 1 / nein = 0
    22. ?>
    Alles anzeigen


    Quellcode

    1. <?php
    2. require('config.php');
    3. $mb = $b_max/1048576;
    4. $mb = round($mb, 2);
    5. @chmod(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod);
    6. if($upw=="1"){
    7. if(isset($_POST['sendfiles'])){
    8. if($_POST['pwd'] != $pw){
    9. include("header.php");
    10. echo "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">
    11. <tr><td align=\"center\">
    12. <span class=\"grossschrift\">
    13. <b>Dateien hochladen</b>
    14. </span>
    15. </td></tr>
    16. <tr><td width=\"100%\" align=\"center\">
    17. <span class=\"grossschrift\">
    18. <br>
    19. Das Passwort fehlt oder ist falsch!<br>
    20. <br>
    21. <a href=\"index.php\" class=\"kleinlink\">&#171 zur&uuml;ck</a>
    22. <meta http-equiv=\"refresh\" content=\"10; URL=http://www.arne-home.de/\">
    23. <br><br>
    24. </td></tr>
    25. </table>";
    26. include("footer.php");
    27. exit;}
    28. }
    29. }
    30. if($_GET['action'] == 'inhalt') {
    31. include("header.php");
    32. echo "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">
    33. <tr><td align=\"center\">
    34. <span class=\"grossschrift\"><b>Inhalt des Uploadordners</b></span>
    35. </td></tr>
    36. <tr><td width=\"100%\" align=\"center\"><br>";
    37. $verz=opendir (''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.');
    38. while ($File = readdir ($verz)) {
    39. if($File != '.' && $File != '..') {
    40. echo "<table cellpadding=\"0\" cellspacing=\"0\" width=\"20%\"><tr><td align=\"left\">";
    41. if($dl_link==1){
    42. echo "<img width=\"11\" height=\"11\" src=\"./img/$li_bild\"><a href=\"$pfad/$File\" target=\"_blank\" class=\"grosslink\"> $File</a>";
    43. }
    44. else{
    45. echo "<span class=\"grossschrift\"><img width=\"11\" height=\"11\" src=\"./img/$li_bild\"> $File</span>";
    46. }
    47. echo "</td></tr></table>";}
    48. }
    49. if ($dl_gesamt==1) {
    50. function dir_size($dir, &$size, $recursive=TRUE){
    51. $handle = @opendir($dir);
    52. if(!$handle)
    53. return false;
    54. while ($file = @readdir ($handle)){
    55. if (eregi("^\.{1,2}$",$file)){
    56. continue;}
    57. if(!$recursive && $dir != $dir.$file."/"){
    58. if(is_dir($dir.$file))
    59. continue;}
    60. if(is_dir($dir.$file)){
    61. dir_size($dir.$file."/", $size, $recursive);}
    62. else{
    63. $size += filesize($dir.$file);}
    64. }
    65. @closedir($handle);
    66. }
    67. function sizeMath($size){
    68. if($size >= 1024000){
    69. $size = $size / 1024000;
    70. $size = sprintf("%01.2f", $size) . ' MB';
    71. }
    72. else{
    73. $size = $size / 1024;
    74. $size = sprintf("%01.1f", $size) . ' KB';
    75. }
    76. return $size;
    77. }
    78. $size = 0;
    79. dir_size(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/', $size, TRUE);
    80. $sizeD = sizeMath($size);
    81. echo "<br><span class=\"kleinschrift\">Gesamtgr&ouml;sse der Dateien: ";
    82. echo $sizeD;
    83. if($admin==1) { echo "<br /><a href=\"./admin/index.php\" target=\"_blank\" class=\"kleinlink\">Admin</a>";}
    84. }
    85. echo "<br /><br /><a href=\"index.php\" class=\"kleinlink\">&#171 zur&uuml;ck</a><br /><br /></td></tr></table>";
    86. include("footer.php");
    87. exit;
    88. }
    89. include("header.php");
    90. ?>
    91. <table width="100%" cellpadding="0" cellspacing="0">
    92. <tr><td align="center">
    93. <span class="grossschrift">
    94. <b>Dateien hochladen</b>
    95. </span>
    96. </td></tr>
    97. <tr><td width="100%" align="center">
    98. <span class="grossschrift">
    99. <br>
    100. Die Datei darf nicht gr&ouml;&szlig;er als <?php echo "$mb"; ?> MB sein.<br>
    101. <?php if($dl_endung==1){ echo"Zugelassene Dateiformate"; foreach ($filetypes as $value){echo " $value";}echo ".<br>";} ?>
    102. Wieviele Dateien sollen hochgeladen werden?</span><br>
    103. <br>
    104. <?php if($inhalt==1){ echo "<a href=\"index.php?action=inhalt\" class=\"grosslink\"><b>Inhalt des Uploadordners</b></a><br>";} ?>
    105. <br>
    106. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    107. <select name="numfiles" class="select">
    108. <?php
    109. for ($i=1; $i<=$dateien; $i++) {
    110. echo ("<option value=$i>$i");
    111. }
    112. ?>
    113. </select>
    114. <input type="Submit" value="Anzahl festlegen" name="up" class="button">
    115. <br><br>
    116. </form>
    117. <div id="wait" style="display: none;"><img src="./img/<?echo $progress; ?>"></div>
    118. <form method="post" action="<?echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" onsubmit="return window.setTimeout(function() { document.getElementById('wait').style.display = 'block'; }, 1000);">
    119. <?php
    120. if (isset($_POST['up'])){
    121. echo '<span class="grossschrift"><b>'.$numfiles.'</b> ';
    122. echo $_POST['numfiles'] == '1' ? 'Datei kann' : 'Dateien k&ouml;nnen';
    123. echo ' hochgeladen werden.</span><br />';
    124. for ($i=1; $i<=$_POST['numfiles']; $i++){
    125. echo "<br /><input type=\"File\" name=\"myfile$i\" class=\"input\">";}
    126. if($upw==1){echo'<br /><br /><span class="grossschrift">Passwort</span> <input type="password" name="pwd" class="input" style="width:40px;">';}
    127. echo '<br /><input type="Submit" name="sendfiles" value="hochladen" class="button"><br /><br/>';}
    128. if (isset($_POST['sendfiles'])){
    129. $numsendfiles = count($_FILES);
    130. foreach($_FILES as $strFieldName => $arrPostFiles){
    131. $arrPostFiles=preg_replace( array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/","/ /"),array("ae","oe","ue","Ae","Oe","Ue","ss","_"), $arrPostFiles);
    132. if ($arrPostFiles['size'] > $b_min && $arrPostFiles['size'] < $b_max){
    133. $strFileName = $arrPostFiles['name'];
    134. $strFileTemp = $arrPostFiles['tmp_name'];
    135. if ($dl_endung==0) {
    136. @copy ($strFileTemp, "$_SERVER[DOCUMENT_ROOT]/$pfad/$strFileName");
    137. echo "<span class=\"grossschrift\"><font color=green><b>Datei $strFileName erfolgreich hochgeladen.</b></font></span><br><br>";
    138. if ($upmail==1 && $numsendfiles != 0) {
    139. $ip = $_SERVER["REMOTE_ADDR"];
    140. $subject = "Upload auf Homepage";
    141. $body .= "Datum: ".date("d.m.Y, H:i:s")." Uhr\n";
    142. $body .= "IP: $ip\n";
    143. $body .= "$numsendfiles Datei(en) wurden hochgeladen\n";
    144. $body .= "Domain: http://$_SERVER[HTTP_HOST]$_SERVER[SCRIPT_NAME]\n\n";
    145. @mail($email, $subject, $body, "From: $email");
    146. }
    147. }
    148. elseif($dl_endung==1) {
    149. $pfad_info = pathinfo($strFileName);
    150. $extension = strtolower($pfad_info["extension"]);
    151. if (in_array($extension,$filetypes)) {
    152. if ($dateien_w == 0) {
    153. $unixtime = time();
    154. $strFileNameComponents = explode(".",$arrPostFiles['name']);
    155. $strFileName = "$strFileNameComponents[0]-$unixtime.".$strFileNameComponents[1];}
    156. @copy ($strFileTemp, "$_SERVER[DOCUMENT_ROOT]/$pfad/$strFileName");
    157. echo "<span class=\"grossschrift\"><font color=green><b>Datei $strFileName erfolgreich hochgeladen.</b></font></span><br><br>";
    158. if ($upmail==1 && $numsendfiles != 0) {
    159. $ip = $_SERVER["REMOTE_ADDR"];
    160. $subject = "Upload auf Homepage";
    161. $body .= "Datum: ".date("d.m.Y, H:i:s")." Uhr\n";
    162. $body .= "IP: $ip\n";
    163. $body .= "$numsendfiles Datei(en) wurden hochgeladen\n";
    164. $body .= "Domain: http://$_SERVER[HTTP_HOST]$_SERVER[SCRIPT_NAME]\n\n";
    165. @mail($email, $subject, $body, "From: $email");
    166. }
    167. }
    168. else {
    169. echo "<span class=\"grossschrift\"><font color=red><b>Unerlaubtes Dateiformat!</span><br><br>";}
    170. }
    171. }
    172. else {
    173. echo "<span class=\"grossschrift\"><font color=red><b>Die Datei mu&szlig; gr&ouml;&szlig;er als $b_min Bytes und kleiner als $mb MB sein!</b></font></span><br><br>";}
    174. }
    175. }
    176. ?>
    177. </form>
    178. </td></tr>
    179. </table>
    180. <?php include("footer.php");?>
    Alles anzeigen


    Ich hoffe das wird jetzt nicht zu unübersichtlich.

    Naja jedenfalls dachte ich zuerst das die Daten in dem Ordner: "up" landen, tut meine Beispieldatei aber nicht.
    Und nun vermute ich das diese Zeile was damit zu tun hat: @chmod(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod);
    Aber wo genau muss ich jetzt den Pfad zum Ordner eingeben ?

    Danke schonmal
  • Jetzt kommen wir der Sache schon ein bischen näher.

    Was mich wundert ist, dass du sagst, dass es eigentlich funktioniert. Zumindestens glaubst du es.
    Kannst du die Aussage konkretisieren?

    Geht es mit dem Standardpfad oder geht es nicht?


    Ansonsten:
    Nimm mal das @ aus den folgenden Zeilen raus und schau dir die Fehlermeldung an:

    Quellcode

    1. @copy ($strFileTemp, "$_SERVER[DOCUMENT_ROOT]/$pfad/$strFileName");
    2. @chmod(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod);
  • bei dem Beospiel klappt das mit dem hochladen der Datei zum Beispiel warum auch immer..

    Quellcode

    1. <html>
    2. <head> <title>Upload Script by Torben Brodt</title> </head>
    3. <body>
    4. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
    5. <input type="file" name="datei" />
    6. <input type="submit" value="Datei hochladen" />
    7. </form>
    8. <?php
    9. function make_filename()
    10. {
    11. $end = substr($_FILES['datei']['name'], -3);
    12. $i=1;
    13. while(is_file($i.'.'.$end))
    14. {
    15. $i++;
    16. }
    17. return $i.'.'.$end;
    18. }
    19. if (isset($_FILES['datei']) and ! $_FILES['datei']['error'])
    20. {
    21. $filename = $_FILES['datei']['name'];
    22. $new = make_filename();
    23. move_uploaded_file($_FILES['datei']['tmp_name'], $new);
    24. echo "<b>Status:</b> Upload komplett<br />".$new;
    25. } else {
    26. echo "<b>Status:</b> Fehler beim Upload";
    27. }
    28. ?>
    29. </body>
    30. </html>
    Alles anzeigen
  • Ahh okay...nun sagt er, dass es das Verzeichnis garnicht gibt.


    Quellcode

    1. Warning: chmod() [function.chmod]: No such file or directory in C:\xampp\htdocs\tutorial\uploadv1.2\index.php on line 5


    In den Ordner soll das ja alles auch rein: C:\xampp\htdocs\tutorial\uploadv1.2\up

    Aber so wie ich die Fehlermeldung interpretiere versucht er einen Ordner IN der index.php zu finden ??

    Danke für deine Mühe
  • Benny1452 schrieb:


    Aber so wie ich die Fehlermeldung interpretiere versucht er einen Ordner IN der index.php zu finden ??


    hehe ... ich denke mal, dass das nicht dein erster Fehler sein wird. Schau mal in der Datei, in der angegebenen Zeile nach, dann ist deine Frage beantwortet ;)


    Schau dir doch einfach den Pfad an.

    Quellcode

    1. echo $_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod;
    2. //@chmod(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod);
  • Edit:
    Ein Licht ist aufgegangen ;)
    Steht doch da --> $_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod



    Naja, wer auch immer das Plugin geschrieben hat es ist gruselig.

    Abgesehen davon, dass man bei einem Uploadscript es einfach missachtet ob der ja so unwichtige chmod richtig gesetzt wird

    Quellcode

    1. @chmod(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod);


    ist das hier noch viel (Dafür gibt es kein Wort .....)

    Quellcode

    1. @copy ($strFileTemp, "$_SERVER[DOCUMENT_ROOT]/$pfad/$strFileName");
    2. echo "<span class=\"grossschrift\"><font color=green><b>Datei $strFileName erfolgreich hochgeladen.</b></font></span><br><br>";



    Naja, guck dir davon nichts ab. Ich hoffe das Plugin war mit "Alpha" gekennzeichnet.
  • mehrere Dateien gleichzeitig hochladen auf eine extra Unterseite

    Hey Ho,

    ich hab mir jetzt im Code überall mal Kommentare gemacht. Und nun würd ich gern herausfinden wie ich die Funktion, dass man gleich mehrer Dateien hochladen kann, auf eine Extra Seite bringt...Also müsste man den Teil abschneiden und eine eigene Datei draus machen....was allerdings überhaupt nicht klappt...

    Wenn ich den Button: "Anzahl festlegen" lösche wird das "Dateiauswahl-Feld" garnicht erst angezeigt - ich würde das gerne so hinbekommen, dass man direkt auf der Hauptseite das "Dateiauswahl-Feld" sieht und man optioal auf einer Unterseite dann mehrere Dateien gleichzeitig hochladen kann.

    Ich hoffe ihr versteht wie ich das meine.

    Danke schonmal :)

    Ps. ich häng nochmal die index.php ran

    Der Bereich den ich meine ist von Zeile 153 - ca. 173

    Quellcode

    1. <?php
    2. require('config.php'); # die Datei Config.php wird als erstes ausgeführt
    3. $mb = $b_max/1048576;
    4. $mb = round($mb, 2);
    5. @chmod(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod); #im Rootverzeichnis des Servers gucken !!!
    6. #echo $_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod; #<-- Bei der Zeile die Raute wegnehmen um zu sehen wo er die Datei hinspeichern will
    7. /*
    8. Passwortabfrage
    9. if($upw=="1"){
    10. if(isset($_POST['sendfiles'])){
    11. if($_POST['pwd'] != $pw){
    12. include("header.php");
    13. echo "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">
    14. <tr><td align=\"center\">
    15. <span class=\"grossschrift\">
    16. <b>Dateien hochladen</b>
    17. </span>
    18. </td></tr>
    19. <tr><td width=\"100%\" align=\"center\">
    20. <span class=\"grossschrift\">
    21. <br>
    22. Das Passwort fehlt oder ist falsch!<br>
    23. <br>
    24. <a href=\"index.php\" class=\"kleinlink\">&#171 zur&uuml;ck</a>
    25. <br><br>
    26. </td></tr>
    27. </table>";
    28. exit;}
    29. }
    30. }
    31. */
    32. if($_GET['action'] == 'inhalt')
    33. {
    34. include("header.php");
    35. echo "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">
    36. <tr><td align=\"center\">
    37. <span class=\"grossschrift\"><b>Inhalt des Uploadordners</b></span>
    38. </td></tr>
    39. <tr><td width=\"100%\" align=\"center\"><br>";
    40. $verz=opendir (''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.');
    41. while ($File = readdir ($verz))
    42. {
    43. if($File != '.' && $File != '..')
    44. {
    45. echo "<table cellpadding=\"0\" cellspacing=\"0\" width=\"20%\"><tr><td align=\"left\">";
    46. if($dl_link==1)
    47. {
    48. echo "<img width=\"11\" height=\"11\" src=\"./img/$li_bild\"><a href=\"$pfad/$File\" target=\"_blank\" class=\"grosslink\"> $File</a>";
    49. }
    50. else
    51. {
    52. echo "<span class=\"grossschrift\"><img width=\"11\" height=\"11\" src=\"./img/$li_bild\"> $File</span>";
    53. }
    54. echo "</td></tr></table>";
    55. }
    56. }
    57. # Gesamtgrösse der Dateien anzeigen ja = 1 / nein = 0
    58. if ($dl_gesamt==1)
    59. {
    60. function dir_size($dir, &$size, $recursive=TRUE)
    61. {
    62. $handle = @opendir($dir);
    63. if(!$handle)
    64. return false;
    65. while ($file = @readdir ($handle))
    66. {
    67. if (eregi("^\.{1,2}$",$file))
    68. {
    69. continue;
    70. }
    71. if(!$recursive && $dir != $dir.$file."/")
    72. {
    73. if(is_dir($dir.$file))
    74. continue;
    75. }
    76. if(is_dir($dir.$file))
    77. {
    78. dir_size($dir.$file."/", $size, $recursive);
    79. }
    80. else
    81. {
    82. $size += filesize($dir.$file);
    83. }
    84. }
    85. @closedir($handle);
    86. }
    87. function sizeMath($size)
    88. {
    89. if($size >= 1024000)
    90. {
    91. $size = $size / 1024000;
    92. $size = sprintf("%01.2f", $size) . ' MB';
    93. }
    94. else
    95. {
    96. $size = $size / 1024;
    97. $size = sprintf("%01.1f", $size) . ' KB';
    98. }
    99. return $size;
    100. }
    101. $size = 0;
    102. dir_size(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/', $size, TRUE);
    103. $sizeD = sizeMath($size);
    104. echo "<br><span class=\"kleinschrift\">Gesamtgr&ouml;sse der Dateien: ";
    105. echo $sizeD;
    106. # Adminlink anzeigen ja = 1 / nein = 0
    107. # if($admin==1) { echo "<br /><a href=\"./admin/index.php\" target=\"_blank\" class=\"kleinlink\">Admin</a>";}
    108. }
    109. # echo "<br /><br /><a href=\"index.php\" class=\"kleinlink\">&#171 zur&uuml;ck</a><br /><br /></td></tr></table>";
    110. # exit;
    111. }
    112. include("header.php");
    113. ?>
    114. <table width="100%" cellpadding="0" cellspacing="0">
    115. <tr><td align="center">
    116. <span class="grossschrift">
    117. <!--1. Zeile auf der Seite-->
    118. <b>Dateien hochladen</b>
    119. </span>
    120. </td></tr>
    121. <tr><td width="100%" align="center">
    122. <span class="grossschrift">
    123. <br>
    124. Die Datei darf nicht gr&ouml;&szlig;er als <?php echo "$mb"; ?> MB sein.<br>
    125. <?php if($dl_endung==1){ echo"Zugelassene Dateiformate"; foreach ($filetypes as $value){echo " $value";}echo ".<br>";} ?>
    126. <!--Wieviele Dateien sollen hochgeladen werden?</span><br>-->
    127. <br>
    128. <?php if($inhalt==1){ echo "<a href=\"index.php?action=inhalt\" class=\"grosslink\"><b>Inhalt des Uploadordners</b></a><br>";} ?>
    129. <br>
    130. <!-- hier ist das festgelegt was der Anzahl festlegeButton machen soll-->
    131. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    132. <!--wenn der Bereich bis zum /select gelöscht wird ist das Nummernfeld ganz weg- bringt aber nichts weil dann der Anzahl festlegenButton nichts macht-->
    133. <select name="numfiles" class="select">
    134. <?php
    135. for ($i=1; $i<=$dateien; $i++)
    136. {
    137. #hier entstehen die Zahlen in dem kleinen NUmmernkästchen bei der Auswahl der Upload`s
    138. echo ("<option value=$i>$i");
    139. }
    140. ?>
    141. </select>
    142. <!--ANzahl festlegen button-->
    143. <input type="Submit" value="Anzahl festlegen" name="up" class="button">
    144. <br><br>
    145. </form>
    146. <!--Wenn man die folgenden beiden Zeilen löscht passiert nichts wenn man auf den Sende-Button klickt ! -->
    147. <div id="wait" style="display: none;"><img src="./img/<?echo $progress; ?>"></div>
    148. <form method="post" action="<?echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" onsubmit="return window.setTimeout(function() { document.getElementById('wait').style.display = 'block'; }, 1000);">
    149. <?php
    150. #if (isset($_POST['up']))
    151. {
    152. # echo '<span class="grossschrift"><b>'.$numfiles.'</b> ';
    153. # echo $_POST['numfiles'] == '1' ? 'Datei kann' : 'Dateien k&ouml;nnen';
    154. #echo ' hochgeladen werden.</span><br />';
    155. for ($i=1; $i<=$_POST['numfiles']; $i++)
    156. {
    157. echo "<br /><input type=\"File\" name=\"myfile$i\" class=\"input\">";
    158. }
    159. # Hat nichts mit PW zu tun...Hier wird der Senden-Button erstellt
    160. if($upw==1){echo'<br /><br /><span class="grossschrift">Passwort</span> <input type="password" name="pwd" class="input" style="width:40px;">';
    161. }
    162. echo '<br /><input type="Submit" name="sendfiles" value="Senden" class="button"><br /><br/>';
    163. }
    164. # Umlaute umgewandelt
    165. if (isset($_POST['sendfiles']))
    166. {
    167. $numsendfiles = count($_FILES);
    168. foreach($_FILES as $strFieldName => $arrPostFiles)
    169. {
    170. $arrPostFiles=preg_replace( array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/","/ /"),array("ae","oe","ue","Ae","Oe","Ue","ss","_"), $arrPostFiles);
    171. if ($arrPostFiles['size'] > $b_min && $arrPostFiles['size'] < $b_max)
    172. {
    173. $strFileName = $arrPostFiles['name'];
    174. $strFileTemp = $arrPostFiles['tmp_name'];
    175. # bestimmte Dateiendungen zulassen ja = 1 / nein = 0
    176. if ($dl_endung==0)
    177. {
    178. @copy ($strFileTemp, "$_SERVER[DOCUMENT_ROOT]/$pfad/$strFileName");
    179. echo "<span class=\"grossschrift\"><font color=green><b>Datei $strFileName erfolgreich hochgeladen.</b></font></span><br><br>";
    180. # eMail nach Upload wenn dl_endung = 0 ja = 1 / nein = 0
    181. if ($upmail==1 && $numsendfiles != 0)
    182. {
    183. $ip = $_SERVER["REMOTE_ADDR"];
    184. $subject = "Upload auf Homepage";
    185. $body .= "Datum: ".date("d.m.Y, H:i:s")." Uhr\n";
    186. $body .= "IP: $ip\n";
    187. $body .= "$numsendfiles Datei(en) wurden hochgeladen\n";
    188. $body .= "Domain: http://$_SERVER[HTTP_HOST]$_SERVER[SCRIPT_NAME]\n\n";
    189. @mail($email, $subject, $body, "From: $email");
    190. }
    191. }
    192. # bestimmte Dateiendungen zulassen ja = 1 / nein = 0
    193. elseif($dl_endung==1)
    194. {
    195. $pfad_info = pathinfo($strFileName);
    196. $extension = strtolower($pfad_info["extension"]);
    197. if (in_array($extension,$filetypes))
    198. {
    199. if ($dateien_w == 0)
    200. {
    201. $unixtime = time();
    202. $strFileNameComponents = explode(".",$arrPostFiles['name']);
    203. $strFileName = "$strFileNameComponents[0]-$unixtime.".$strFileNameComponents[1];
    204. }
    205. @copy ($strFileTemp, "$_SERVER[DOCUMENT_ROOT]/$pfad/$strFileName");
    206. echo "<span class=\"grossschrift\"><font color=green><b>Datei $strFileName erfolgreich hochgeladen.</b></font></span><br><br>";
    207. # eMail nach Upload wenn dl_endung = 1 ja = 1 / nein = 0
    208. if ($upmail==1 && $numsendfiles != 0)
    209. {
    210. $ip = $_SERVER["REMOTE_ADDR"];
    211. $subject = "Upload auf Homepage";
    212. $body .= "Datum: ".date("d.m.Y, H:i:s")." Uhr\n";
    213. $body .= "IP: $ip\n";
    214. $body .= "$numsendfiles Datei(en) wurden hochgeladen\n";
    215. $body .= "Domain: http://$_SERVER[HTTP_HOST]$_SERVER[SCRIPT_NAME]\n\n";
    216. @mail($email, $subject, $body, "From: $email");
    217. }
    218. }
    219. else
    220. {
    221. echo "<span class=\"grossschrift\"><font color=red><b>Unerlaubtes Dateiformat!</span><br><br>";
    222. }
    223. }
    224. }
    225. else {
    226. echo "<span class=\"grossschrift\"><font color=red><b>Die Datei mu&szlig; gr&ouml;&szlig;er als $b_min Bytes und kleiner als $mb MB sein!</b></font></span><br><br>";}
    227. }
    228. }
    229. ?>
    230. </form>
    231. </td></tr>
    232. </table>
    Alles anzeigen
  • Willst du es auf mehrere Seiten verteilen müsstest du auch die Authentifizierungs-vorkehrungen konsequent weiterziehen.

    Der Code ist im Moment ein ziemliches Chaos.
    Ich würde dir empfehlen dir die Zeit zu nehmen, ein paar Funktionen für Authentifizierung und Upload zu nutzen und dadurch konsequent aufzuräumen. Dabei lernst du bestimmt auch was.
  • hi,

    habs geschafft.....hab einfach Die for-Schleife in der "$_POST['numfiles']" durchlaufen wird auskommentiert und nur den Inhalt stehen gelassen. Und in dem was jetzt übrig ist "$i" durch "1" ersetzt.
    naja das der Code unübersichtlich ist, kann ich noch nicht so recht beurteilen hab noch nich so viele andere Skripte gesehen....dabei habe ich schon so viel an unnötiges Zeug`s gelöscht.

    mal sehen wie weit ich nun komme :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Benny1452 ()

  • "speichern unter.. " Feld; header Funktion ??

    hi,

    also meine Seite funktioniert jetzt soweit eigentlich ganz gut.

    Nur wenn man was hochlädt und dann auf den Downloadlink klickt passiert folgendes:

    - bei mp3 Dateien spielt er die im Browser mit dem quick time Player ab
    - bei Bilddateien zeigt er die bloß im Browser an
    - genau wie bei pdf Dateien.

    Ich möchte ja, dass ein Downloadfenster kommt indem man auswählen kann: öffnen oder speichern unter...

    Soo...herausgefunden habe ich bereits, dass das mit der header Funktion geht.
    Ein Beispiel habe ich auch gefunden:

    Quellcode

    1. 1 $file = '/pfad/zu/einer/datei.zip';
    2. 2 // Dateityp
    3. 3 header( 'Content-type: application/octet-stream' );
    4. 4 // Groesse der Datei
    5. 5 header( 'Content-Length: ' . filesize( $file ) );
    6. 6 // Dateiname
    7. 7 $dateiname = basename( $file );
    8. 8 header( 'Content-Disposition: attachment; filename="' . $dateiname . '"' );
    9. 9 // Ausgeben der Datei
    10. 10 readfile( $file );


    Aber nun hab ich gelesen das ich das ja in eine eigene Seite machen muss, weil vor dem "<?php" kein Leerzeichen oder sonst was stehen darf....sonst gehts nicht. und wenn ich das auf die index.php nach ganz oben schriebe will er die speichern -.-

    Muss ich, wenn ich dieses Beispiel benutze noch was anpassen ausser den Pfad zur Datei ? ...Und selbst wie ich das machen soll weiß ich nicht weil ich ja nicht den Dateinamen von den Dateien die die Benutzer hochladen vorher wissen kann :(

    ich bin echt für jeden Tipp dankbar

    mfg Benny

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Benny1452 ()

  • RE: "speichern unter.. " Feld; header Funktion ??

    Benny1452 schrieb:

    hi,
    Und selbst wie ich das machen soll weiß ich nicht weil ich ja nicht den Dateinamen von den Dateien die die Benutzer hochladen vorher wissen kann :(


    Weshalb vorher? Man kann doch keine Datei runterladen bevor sie hochgeladen ist.. Also hast du den Dateinamen.
    Du verschickst den Download Link per Mail?

    Eigentlich sollte das simpel sein. Den Dateinamen der Datei wenn du sie hochlädst, kannst du ja ermitteln.
    An die php Datei mit dem veränderten header hängst du per GET den Dateinamen dran.

    Quellcode

    1. $dateiname= $_FILES['inputfeldname']['name'];

    Quellcode

    1. <a href="downloaddatei.php?dname=<? echo $dateiname;?>">Downloadlink</a>


    Dann:

    Quellcode

    1. $name=$_GET['dname'];
    2. $file = '/pfad/".$name."'';
    3. header( 'Content-type: application/octet-stream' );
    4. header( 'Content-Length: ' . filesize( $file ) );
    5. $dateiname = basename( $file );
    6. header( 'Content-Disposition: attachment; filename="' . $dateiname . '"' );
    7. readfile( $file );


    Sollte so ohne Probleme funktionieren. Wenn ich dein Problem richtig verstanden habe
  • Koljan777 schrieb:

    aber dürfen Pfads mit / anfangen?
    man muss doch ordner angeben, in welches er wechseln soll


    Anders als im Code Kommentar angegeben handelt es sich nicht um einen relativen, sondern um einen absoluten Pfad.
    Beginnt der Pfad mit einem "/", dann ist damit das Wurzelverzeichnis gemeint.

    Bei einem typischen Shared Hosting Paket würde dein Skript vermutlich unter /var/www/kunde10/domain500/web/index.php liegen
    Wenn dein Upload Verzeichnis nun unter dem absoluten Pfad /var/www/kunde10/domain500/web/upload liegt, kannst du diesen Pfad natürlich auf diese Art direkt angeben oder einfach einen relativen Pfad verwenden: "upload"

    Es ist ziemlich unwahrscheinlich dass der absolute Pfad /upload bei einem vernünftig konfigurierten Webserver verwendet wird - vor allem nicht bei Shared Hosting
  • hi,

    danke für die vielen guten Antworten :)

    nachdem ich mir das jetzt ein paar Tage angeguckt habe verstehe ich die Antwort von Snowflake noch nicht so richtig...
    Die ersten beiden Codes kommen in meine download.php oder ?
    Also diese hier :

    Quellcode

    1. $dateiname= $_FILES['inputfeldname']['name'] // und $_FILES soll ein Array sein ?

    und

    Quellcode

    1. <a href="downloaddatei.php?dname=<? echo $dateiname;?>">Downloadlink</a> // Wenn das hier: "?dname=" der Datename ist.warum ist denn danach nochmal die Variable von dem Dateinamen ?

    Aber wenn ich auf den Downloadlink klicke müsste ich ja zu ungefähr so einer seite kommen: domain.org/upload/Dateiname.jpg
    Genau auf dieser Seite muss doch dann der folgende Code ausgeführt werden....aber wie ?

    Quellcode

    1. $name=$_GET['dname'];
    2. $file = '/pfad/".$name."'';
    3. header( 'Content-type: application/octet-stream' );
    4. header( 'Content-Length: ' . filesize( $file ) );
    5. $dateiname = basename( $file );
    6. header( 'Content-Disposition: attachment; filename="' . $dateiname . '"' );
    7. readfile( $file );


    Sorry für die vielen Anfängerfragen...

    MFG Benny

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Benny1452 ()