Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] php script mit upload formular geht nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] php script mit upload formular geht nicht

    Hallo liebe Php-Profis,

    ich bin gerade mit einem kleinen Projekt beschäftigt. ich habe eine Art Uhr gebaut mit einem Raspberry Pi und einer Audioanlage. ich würde es gerne auf meiner Homepage ermöglichen mir mp3-files mit einer länge von 10sekunden bzw max. 1mb auf einen Ordner "hochgeladenes" zu schicken. (php.ini ist entsprechend angelegt) Die Mp3 Files kommen in eine Playlist. Auf diese Greift der Raspberry zu und verwendet sie als Stundenschlag für die Uhr. Jetzt habe ich das Problem dass immer der Error 404 kommt wenn ich den upload Button im Formular betätige. Mein Provider 1&1 konnte keinen Fehler im Skript finden und war auch sonst ratlos warum es nicht funktioniert. Erstellt habe ich das Skript in Dreamweaver. Es wäre super nett wenn einer mal drüberschauen könnte wo der Fehler sein könnte.
    die eigentliche Homepage heisst Musikstunde.eu ich habe hier die Subdomain ohnedrohne.de. Hier liegt die index.php, die php.ini und auch der Ordner hochgeladenes. Vielen Dank für eure Hilfe!!!! Das Script hänge ich an.

    <!doctype html>
    <!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]-->
    <!--[if IE 7]> <html class="ie7 oldie"> <![endif]-->
    <!--[if IE 8]> <html class="ie8 oldie"> <![endif]-->
    <!--[if gt IE 8]><!-->
    <html class="">
    <!--<![endif]-->
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Saxclock</title>
    <link href="boilerplate.css" rel="stylesheet" type="text/css">
    <link href="../index2.css" rel="stylesheet" type="text/css">
    <style type="text/css">
    a:link {
    color: #FC3;
    }
    </style>


    <!--
    Weitere Erläuterungen zu bedingten Kommentaren, die die HTML-Tags am Anfang der Datei umschließen erhalten Sie hier:
    paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/

    Wenn Sie eine angepasste Version von modernizr (http://www.modernizr.com/) verwenden, führen Sie die folgenden Schritte aus:
    * Fügen Sie hier den Hyperlink zu js ein
    * Entfernen Sie den unten stehenden Hyperlink auf html5shiv
    * Fügen Sie in die HTML-Tags am Anfang der Datei die Klasse "no-js" ein
    * Sie können auch den Link auf respond.min.js entfernen, wenn Sie in Ihre modernizr-Version die MQ-Polyfill eingefügt haben
    -->
    <!--[if lt IE 9]>
    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->



    <script src="respond.min.js"></script>
    </head>
    <body>
    <div class="gridContainer clearfix">
    <div id="LayoutDiv1"><?php
    /*
    echo "<pre>";
    echo "FILES:<br />";
    print_r ($_FILES );
    echo "</pre>";
    */
    if ( $_FILES['uploaddatei']['name'] <> "" )
    {
    // Datei wurde durch HTML-Formular hochgeladen
    // und kann nun weiterverarbeitet werden

    // Kontrolle, ob Dateityp zulässig ist
    $zugelassenedateitypen = array("mp3");

    if ( ! in_array( $_FILES['uploaddatei']['type'] , $zugelassenedateitypen ))
    {
    echo "<p>Dateitype ist NICHT zugelassen</p>";
    }
    else
    {
    // Test ob Dateiname in Ordnung
    $_FILES['uploaddatei']['name'] = dateiname_bereinigen($_FILES['uploaddatei']['name']);

    if ( $_FILES['uploaddatei']['name'] <> '' )
    {
    move_uploaded_file (
    $_FILES['uploaddatei']['tmp_name'] ,
    "hochgeladenes/". $_FILES['uploaddatei']['name'] );

    echo "<p>Hochladen war erfolgreich: ";
    echo '<a href="uhrprojekt_online/hochgeladenes/'. $_FILES['uploaddatei']['name'] .'">';
    echo "hochgeladenes/". $_FILES['uploaddatei']['name'];
    echo '</a>';
    }
    else
    {
    echo "<p>Dateiname ist nicht zul&auml;ssig</p>";
    }
    }
    }

    function dateiname_bereinigen($dateiname)
    {
    // erwünschte Zeichen erhalten bzw. umschreiben
    // aus allen ä wird ae, ü -> ue, ß -> ss (je nach Sprache mehr Aufwand)
    // und sonst noch ein paar Dinge (ist schätzungsweise mein persönlicher Geschmach
    $dateiname = strtolower ( $dateiname );
    $dateiname = str_replace ('"', "-", $dateiname );
    $dateiname = str_replace ("'", "-", $dateiname );
    $dateiname = str_replace ("*", "-", $dateiname );
    $dateiname = str_replace ("ß", "ss", $dateiname );
    $dateiname = str_replace ("&szlig;", "ss", $dateiname );
    $dateiname = str_replace ("ä", "ae", $dateiname );
    $dateiname = str_replace ("&auml;", "ae", $dateiname );
    $dateiname = str_replace ("ö", "oe", $dateiname );
    $dateiname = str_replace ("&ouml;", "oe", $dateiname );
    $dateiname = str_replace ("ü", "ue", $dateiname );
    $dateiname = str_replace ("&uuml;", "ue", $dateiname );
    $dateiname = str_replace ("&Auml;", "ae", $dateiname );
    $dateiname = str_replace ("&Ouml;", "oe", $dateiname );
    $dateiname = str_replace ("&Uuml;", "ue", $dateiname );
    $dateiname = htmlentities ( $dateiname );
    $dateiname = str_replace ("&", "und", $dateiname );
    $dateiname = str_replace ("+", "und", $dateiname );
    $dateiname = str_replace ("(", "-", $dateiname );
    $dateiname = str_replace (")", "-", $dateiname );
    $dateiname = str_replace (" ", "-", $dateiname );
    $dateiname = str_replace ("\'", "-", $dateiname );
    $dateiname = str_replace ("/", "-", $dateiname );
    $dateiname = str_replace ("?", "-", $dateiname );
    $dateiname = str_replace ("!", "-", $dateiname );
    $dateiname = str_replace (":", "-", $dateiname );
    $dateiname = str_replace (";", "-", $dateiname );
    $dateiname = str_replace (",", "-", $dateiname );
    $dateiname = str_replace ("--", "-", $dateiname );

    // und nun jagen wir noch die Heilfunktion darüber
    $dateiname = filter_var($dateiname, FILTER_SANITIZE_URL);
    return ($dateiname);
    }
    ?>

    <form name="uploadformular" enctype="multipart/form-data" action="../Uhrprojekt_online/dateiupload.php" method="post" >
    Datei: <input type="file" name="uploaddatei" size="60" maxlength="255" >
    <input type="Submit" name="submit" value="Datei hochladen">
    </form></div>
    </div>

    <table width="464" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <th width="230" height="64" align="center" valign="middle" scope="col"><p>Mp3 auf 10 Sekunden kürzen:g </p>
    <p><a href="http://mp3cut.net/de/" target="new">http://mp3cut.net/de/</a></p></th>
    <th width="234" scope="col"><p>Soundideen</p>
    <p><a href="http://freesound.org" target="new">http://freesound.org</a></p></th>
    </tr>
    </table>
    <blockquote>
    <p><img src="Uhrprojekt Index.gif" alt="Clockwork Porject">

    </p>
    </blockquote>
    </body>
    </html>

  • #2
    Hallo,

    erstmal "Willkommen im Froum". Bitte nutze zukünftig die im Editor verfügbaren Code- oder PHP-Tags um deinen Code formatiert / mit Syntax-Hervorherbung darzustellen!

    Innerhalb des Form-Tag schreibst du folgendes:
    action="../Uhrprojekt_online/dateiupload.php"

    Gibt es diese Datei und liegt Sie wirklich einen Ordner "höher" und dann im Ordner "Uhrprojekt_online"?
    Gruß,
    SebTM

    Kommentar


    • #3
      hallo sebtm. vielen Dank für deine Antwort und den Hinweis. Ich werde mich zukünftig daran halten.

      Den Ordner uhrprojekt_online gibt es.
      Die Domain heißt www.ohnedrohne.de der Zielordner ist uhrprojekt_online. Darin liegt die php Datei.

      Ich nutze den webspace mit verschiedenen Domains. Die "hauptdomain" ist Musikstunde.eu. Hier habe ich den Unterordner uhrprojekt_online erstellt und bei 1&1 diesen als Zieladresse angegeben. Die Index.php wird auch aufgerufen. Allerdings verstehe ich den /Upload.php nicht. Hatte bislang leider noch nichts mit Programmierung zu tun.

      Kommentar


      • #4
        Zitat von handwerker Beitrag anzeigen
        Den Ordner uhrprojekt_online gibt es.
        Die Domain heißt www.ohnedrohne.de der Zielordner ist uhrprojekt_online. Darin liegt die php Datei.
        Dann solltest du auch das Verzeichnis »uhrprojekt_online« als Ziel angeben - das ist nicht das gleiche wie »Uhrprojekt_online«!

        Kommentar


        • #5
          @tk1234 vielen Dank für den Tip. Ich habe die Großschreibung nun beachtet. Leider kommt immer noch die Fehlermeldung 404.
          Zitat von SebTM Beitrag anzeigen

          Innerhalb des Form-Tag schreibst du folgendes:
          action="../Uhrprojekt_online/dateiupload.php"

          Gibt es diese Datei und liegt Sie wirklich einen Ordner "höher" und dann im Ordner "Uhrprojekt_online"?
          eine Datei namens dateiupload.php gibt es nicht. Hat jemand eine Ahnung wie ich generell den Pfad innerhalb des Form-Tag angeben muss?

          Wie gesagt: Ordner mit der index.php heisst Uhrprojekt_online. Hier liegt ebenfalls der Ordner "hochgeladenes"

          Vielen Dank für eure Hilfe!

          Kommentar


          • #6
            Zitat von handwerker Beitrag anzeigen
            eine Datei namens dateiupload.php gibt es nicht. Hat jemand eine Ahnung wie ich generell den Pfad innerhalb des Form-Tag angeben muss?
            Warum gibst du dann als Dateiname dateiupload.php an wenn es die Datei garnicht gibt? Als Ziel musst du eben die Datei angeben die hochgeladenen Dateien entgegennimmt - da das bei dir die gleiche Datei ist und du HTML5 verwendest kannst du das action-Attribut auch einfach ganz weglassen.

            Wie gesagt: Ordner mit der index.php heisst Uhrprojekt_online.
            Gestern hieß er noch uhrprojekt_online - was denn jetzt?

            Kommentar


            • #7
              Hier ist der überarbeitete Code. Ich habe den Uhrprojekt_online Ordner komplett rausgenommen. die index.php liegt ja darin. Oder muss der Ordner in die Pfadangabe? Tausend Dank!

              PHP-Code:
              <!doctype html>
              <!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]-->
              <!--[if IE 7]>    <html class="ie7 oldie"> <![endif]-->
              <!--[if IE 8]>    <html class="ie8 oldie"> <![endif]-->
              <!--[if gt IE 8]><!-->
              <html class="">
              <!--<![endif]-->
              <head>
              <meta charset="UTF-8">
              <meta name="viewport" content="width=device-width, initial-scale=1">
              <title>Saxclock</title>
              <link href="boilerplate.css" rel="stylesheet" type="text/css">
              <link href="../index2.css" rel="stylesheet" type="text/css">
              <style type="text/css">
              a:link {
                  color: #FC3;
              }
              </style>


              <!-- 
              Weitere Erläuterungen zu bedingten Kommentaren, die die HTML-Tags am Anfang der Datei umschließen erhalten Sie hier:
              paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/

              Wenn Sie eine angepasste Version von modernizr (http://www.modernizr.com/) verwenden, führen Sie die folgenden Schritte aus: 
              * Fügen Sie hier den Hyperlink zu js ein
              * Entfernen Sie den unten stehenden Hyperlink auf html5shiv
              * Fügen Sie in die HTML-Tags am Anfang der Datei die Klasse "no-js" ein
              * Sie können auch den Link auf respond.min.js entfernen, wenn Sie in Ihre modernizr-Version die MQ-Polyfill eingefügt haben 
              -->
              <!--[if lt IE 9]>
              <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
              <![endif]-->



              <script src="respond.min.js"></script>
              </head>
              <body>
              <div class="gridContainer clearfix">
                <div id="LayoutDiv1"><?php
              /*
              echo "<pre>";
              echo "FILES:<br />";
              print_r ($_FILES );
              echo "</pre>";
              */
              if ( $_FILES['uploaddatei']['name']  <> "" )
              {
                  
              // Datei wurde durch HTML-Formular hochgeladen
                  // und kann nun weiterverarbeitet werden
               
                  // Kontrolle, ob Dateityp zulässig ist
                  
              $zugelassenedateitypen = array("mp3");
               
                  if ( ! 
              in_array$_FILES['uploaddatei']['type'] , $zugelassenedateitypen ))
                  {
                      echo 
              "<p>Dateitype ist NICHT zugelassen</p>";
                  }
                  else
                  {
                      
              // Test ob Dateiname in Ordnung
                      
              $_FILES['uploaddatei']['name'] = dateiname_bereinigen($_FILES['uploaddatei']['name']);
               
                      if ( 
              $_FILES['uploaddatei']['name'] <> '' )
                      {
                          
              move_uploaded_file (
                               
              $_FILES['uploaddatei']['tmp_name'] ,
                               
              "hochgeladenes/"$_FILES['uploaddatei']['name'] );
               
                          echo 
              "<p>Hochladen war erfolgreich: ";
                          echo 
              '<a href="hochgeladenes/'$_FILES['uploaddatei']['name'] .'">';
                          echo 
              "hochgeladenes/"$_FILES['uploaddatei']['name'];
                          echo 
              '</a>';
                      }
                      else
                      {
                          echo 
              "<p>Dateiname ist nicht zul&auml;ssig</p>";
                      }
                  }
              }
               
              function 
              dateiname_bereinigen($dateiname)
              {
                  
              // erwünschte Zeichen erhalten bzw. umschreiben
                  // aus allen ä wird ae, ü -> ue, ß -> ss (je nach Sprache mehr Aufwand)
                  // und sonst noch ein paar Dinge (ist schätzungsweise mein persönlicher Geschmach ;)
                  
              $dateiname strtolower $dateiname );
                  
              $dateiname str_replace ('"'"-"$dateiname );
                  
              $dateiname str_replace ("'""-"$dateiname );
                  
              $dateiname str_replace ("*""-"$dateiname );
                  
              $dateiname str_replace ("ß""ss"$dateiname );
                  
              $dateiname str_replace ("&szlig;""ss"$dateiname );
                  
              $dateiname str_replace ("ä""ae"$dateiname );
                  
              $dateiname str_replace ("&auml;""ae"$dateiname );
                  
              $dateiname str_replace ("ö""oe"$dateiname );
                  
              $dateiname str_replace ("&ouml;""oe"$dateiname );
                  
              $dateiname str_replace ("ü""ue"$dateiname );
                  
              $dateiname str_replace ("&uuml;""ue"$dateiname );
                  
              $dateiname str_replace ("&Auml;""ae"$dateiname );
                  
              $dateiname str_replace ("&Ouml;""oe"$dateiname );
                  
              $dateiname str_replace ("&Uuml;""ue"$dateiname );
                  
              $dateiname htmlentities $dateiname );
                  
              $dateiname str_replace ("&""und"$dateiname );
                  
              $dateiname str_replace ("+""und"$dateiname );
                  
              $dateiname str_replace ("(""-"$dateiname );
                  
              $dateiname str_replace (")""-"$dateiname );
                  
              $dateiname str_replace (" ""-"$dateiname );
                  
              $dateiname str_replace ("\'""-"$dateiname );
                  
              $dateiname str_replace ("/""-"$dateiname );
                  
              $dateiname str_replace ("?""-"$dateiname );
                  
              $dateiname str_replace ("!""-"$dateiname );
                  
              $dateiname str_replace (":""-"$dateiname );
                  
              $dateiname str_replace (";""-"$dateiname );
                  
              $dateiname str_replace (",""-"$dateiname );
                  
              $dateiname str_replace ("--""-"$dateiname );
               
                  
              // und nun jagen wir noch die Heilfunktion darüber
                  
              $dateiname filter_var($dateinameFILTER_SANITIZE_URL);
                  return (
              $dateiname);
              }
              ?>
               
              <form name="uploadformular" enctype="multipart/form-data" action="dateiupload.php" method="post" >
              Datei: <input type="file" name="uploaddatei" size="60" maxlength="255" >
              <input type="Submit" name="submit" value="Datei hochladen">
              </form></div>
              </div>

              <table width="464" border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <th width="230" height="64" align="center" valign="middle" scope="col"><p>Mp3 auf 10 Sekunden kürzen:j </p>
                  <p><a href="http://mp3cut.net/de/" target="new">http://mp3cut.net/de/</a></p></th>
                  <th width="234" scope="col"><p>Soundideen</p>
                  <p><a href="http://freesound.org" target="new">http://freesound.org</a></p></th>
                </tr>
              </table>
              <blockquote>
                <p><img src="Uhrprojekt Index.gif" alt="Clockwork Porject">
                  
                </p>
              </blockquote>
              </body>
              </html>

              Kommentar


              • #8
                Zitat von handwerker Beitrag anzeigen
                Hier ist der überarbeitete Code. Ich habe den Uhrprojekt_online Ordner komplett rausgenommen. die index.php liegt ja darin. Oder muss der Ordner in die Pfadangabe?
                Du musst schon selber wissen wo das Script liegt … Aber nicht raten, lesen und richtig angeben (oder action-Attribut ganz weglassen).

                Kommentar


                • #9
                  Zitat von tk1234 Beitrag anzeigen
                  Warum gibst du dann als Dateiname dateiupload.php an wenn es die Datei garnicht gibt? Als Ziel musst du eben die Datei angeben die hochgeladenen Dateien entgegennimmt - da das bei dir die gleiche Datei ist und du HTML5 verwendest kannst du das action-Attribut auch einfach ganz weglassen.
                  das liegt daran, dass ich noch überhaupt nicht mit php vertraut bin und dies einem angeblich funktionierenden Skript entnommen habe. Es hieß dort man müsse nur einen Ordner "hochgeladenes" anlegen. Ich habe dieses Skript verwendet und nur den Dateityp "mp3" ausgetauscht
                  Zitat von tk1234 Beitrag anzeigen
                  Gestern hieß er noch uhrprojekt_online - was denn jetzt?
                  da habe ich mich vertippt, sorry. Er heißt definitiv: Uhrprojekt_online

                  Danke für deine Mühe!

                  Kommentar


                  • #10
                    @tk1234: Vielen herzlichen Dank! Es sieht jetzt schon viel besser aus! Der Error 404 ist dank deines Tips, das action-Attribut ganz wegzulassen, nicht mehr gegeben.

                    Jetzt gibt es nur noch ein Problem mit den Zugelassenen Dateitypen:

                    PHP-Code:
                     $zugelassenedateitypen = array("mp3"); 
                    Ich habe soeben verschiedene mp3 mit einer Größe weit unter 1mb versucht hochzuladen.
                    Es kam immer das Echo: "Dateitype ist NICHT zugelassen"

                    Ist der Code array("mp3") falsch?

                    Kommentar


                    • #11
                      mp3 muss 'audio/mpeg' sein. Es funktioniert! Vielen vielen Dank an alle!!!!

                      Kommentar


                      • #12
                        Du musst prüfen was der Inhalt von "$_FILES['uploaddatei']['type']" ist - ggf. einfach mal mit "var_dump" ausgeben!

                        Edit: Zu langsam - Bitte Thread noch als erledigt markieren!
                        Gruß,
                        SebTM

                        Kommentar


                        • #13
                          Danke SebTM. ich werde den Thread gleich erledigen. Ich habe aber noch eine letzte Frage an euch die wahrscheinlich gar nicht so hier rein passt, aber Ihr habt euch jetzt ja schon is das Skript mit reingedacht.
                          Ich habe gerade eine Bilddatei als mp3 umbenannt. Der upload war erfolgreich. Das sollte aus sicherheitstechnischen Gründen natürlich nicht so sein. Kennt jemand eine Möglichkeit das zu unterbinden. Offensichtlich wird nur der Mime Typ untersucht. Nochmals Danke!

                          Kommentar

                          Lädt...
                          X