kostenloser Webspace werbefrei: lima-city


Datei-Upload funktioniert nicht

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    momar-blog

    momar-blog hat kostenlosen Webspace.

    Hallo,
    ich möchte einen kleinen Datei-Uploader für Bilder oder HTML-Seiten auf Lima-City machen.
    Jeder bekommt auf Wunsch ein Passwort und kann eine bestimmte Anzahl Dateien hochladen und erhält den Direkt-Link.
    Das ist dann, damit u.a. die Benutzer beispielsweise Bilder auf meine Homepage hochladen können, die dann abgefragt werden.
    Ich habe jetzt folgenden Code:

    HTML in "index.html":
    <form method="post" action="upload.php" enctype="multipart/form-data">
     <input type="hidden" name="MAX_FILE_SIZE" value="512000">
     <table width="100%">
      <tr><td width="20%">Datei:</td><td width="80%"><input type="file" name="uplfile"></td></tr>
      <tr><td width="20%">Passwort:</td><td width="80%"><input type="password" name="pass" style="width:100%;"></td></tr>
      <tr><td width="20%"></td><td width="80%" align="right"><input type="submit" value="abschicken"></td></tr>
     </table>
    </form>


    PHP in "upload.php":
    echo "Vorhandene Dateien: ";
    print_r($_FILES);
    echo "<br>\n";
    echo "   Verbinde mit MySQL-Server...<br>\n";
    $mysqli = mysqli_connect("mysql.lima-city.de", "*", "*", "*", 3306);
    echo "   Erhalte Benutzeridentifikationsdaten...<br>\n";
    $mysqlr = mysqli_query($mysqli, "SELECT * FROM  `*` WHERE  `password` = '" . $_POST[pass] . "';");
    echo "   Suche Authentifizierungsdaten in Datenbank...<br>\n";
    $row = mysqli_fetch_assoc($mysqlr);
    echo "   Zähle Uploads...<br>\n";
    $mysqls = mysqli_query($mysqli, "UPDATE `*` SET `uploads` = '" . ($row[uploads] + 1) . "' WHERE  `*`.`password` = '" . $_POST[pass] . "';");
    echo "   Überprüfe Daten...<br>\n";
    if ($row[maxuploads] != 0) {
     if ($row[uploads] < $row[maxuploads]) {
      echo "   OK, noch " . ($row[maxuploads] - ($row[uploads] + 1)) . " Uploads verbleiben!<br>\n";
      $filename = rand(100000000000, 999999999999);
      while (file_exists($filename)) {
       $filename = rand(100000000000, 999999999999);
      }
      $filename = "/private/user-upload/files/" . $filename . "." . pathinfo($_FILES['uplfile']['name'], PATHINFO_EXTENSION);
      echo "Dateiname der Datei: " . $filename . "<br>\n";
      if (!move_uploaded_file($_FILES['uplfile']['tmp_name'], $filename)) { echo("Fehler beim Upload<br>\n"); }
     } else {
      echo "   Sie haben Ihr Upload-Limit erreicht!<br>\n";
     }
    } else {
     if ($row[password] != "") {
      echo "   Master-Upload, keine Beschränkung!<br>\n";
     } else {
      echo '   Falsches Passwort oder Fehler in der Verbindung. Bitte <a href="./">versuchen Sie es erneut</a>!<br>' . "\n";
     }
    }
    echo "   PHP-Skript abgeschlossen...<br>\n";


    Die MySQL-Tabelle enthält die Felder id (PRIMARY-Key), password (Passwort für Upload), maxuploads (Wie viele Uploads mit diesem Passwort möglich sind) und uploads (wie viele Uploads mit diesem Passwort schon gemacht wurden).

    Link zum Skript: http://momar-blog.lima-city.de/private/user-upload/

    Ich bekomme immer nur das:
    Vorhandene Dateien: Array ( [uplfile] => Array ( [name] => *.ext [type] => */* [tmp_name] => /home/webpages/tmp/* [error] => 0 [size] => * ) ) 
    Verbinde mit MySQL-Server...
    Erhalte Benutzeridentifikationsdaten...
    Suche Authentifizierungsdaten in Datenbank...
    Zähle Uploads...
    Überprüfe Daten...
    OK, noch * Uploads verbleiben!
    Dateiname der Datei: /private/user-upload/files/*.ext
    Fehler beim Upload
    PHP-Skript abgeschlossen...


    Die Datei wird nicht hochgeladen. Warum funktioniert das nicht?

    PS: Bei "*" habe ich die Inhalte hier im Forum ausgelassen, in der "echten" Datei habe ich da natürlich Inhalte.

    Beitrag zuletzt geändert: 9.2.2011 21:04:22 von momar-blog
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Der Pfad zu deinem Webspace ist falsch. Wenn du am Anfang einen Slash ('/') hast, wird der Pfad als absolut verarbeitet, in deinem Fall ist er jedoch relativ. Du kannst aber auch einen absoluten Pfad verwenden: /home/webpages/lima-city/mormar-blog/html/private/user-upload/files/datei.xy.

    Noch ein paar Sachen:
    Schwere Sicherheitslücke - du filterst die Dateien nicht. Jeder, der erst mal ein Passwort hat kann hochladen was er will. Zum einen PHP-Dateien, wodurch man sich leicht vollen Lese- und Schreibzugriff verschaffen kann. Auch kann ein Benutzer ZIP-Dateien u.ä. hochladen, wodurch du dann Probleme bekommst (regelwiedrig)!

    Und um Himmels Willen, verwede das <font>-Tag nicht mehr - es gehört seit fast 12 Jahren nicht mehr zu HTML.
  4. Autor dieses Themas

    momar-blog

    momar-blog hat kostenlosen Webspace.

    Der Pfad zu deinem Webspace ist falsch. Wenn du am Anfang einen Slash ('/') hast, wird der Pfad als absolut verarbeitet, in deinem Fall ist er jedoch relativ. Du kannst aber auch einen absoluten Pfad verwenden: /home/webpages/lima-city/mormar-blog/html/private/user-upload/files/datei.xy.

    Dankeschön, das probiere ich gleich aus.
    EDIT: Danke, Funktioniert!!! :wink:


    Schwere Sicherheitslücke - du filterst die Dateien nicht. Jeder, der erst mal ein Passwort hat kann hochladen was er will. Zum einen PHP-Dateien, wodurch man sich leicht vollen Lese- und Schreibzugriff verschaffen kann. Auch kann ein Benutzer ZIP-Dateien u.ä. hochladen, wodurch du dann Probleme bekommst (regelwiedrig)!

    Der Uploader ist ja noch nicht fertig, daran arbeite ich auch noch.


    Und um Himmels Willen, verwede das <font>-Tag nicht mehr - es gehört seit fast 12 Jahren nicht mehr zu HTML.

    Wie gesagt, der Uploader ist noch nicht fertig, das löse ich dann mit einem Stylesheet.

    Wie ist das mit dem versteckten MAX_FILE_SIZE? In welcher Einheit ist die Größe? Kann ich die Zeile weglassen?

    Beitrag zuletzt geändert: 10.2.2011 14:59:37 von momar-blog
  5. momar-blog schrieb:
    Wie ist das mit dem versteckten MAX_FILE_SIZE? In welcher Einheit ist die Größe? Kann ich die Zeile weglassen?

    schau dir das mal an:
    http://php.net/manual/en/features.file-upload.post-method.php
  6. Grundsätzlich müsste man das nicht als extra input-Feld definieren, da bereits beim file-input mit maxlength eine maximale Dateigröße angegeben werden kann. Siehe SelfHTML: Forms.
    Warum die PHP-Doku hier MAX_FILE_SIZE verwendet, weiß ich auch nicht.
  7. m******e


    momar-blog schrieb:
    Wie ist das mit dem versteckten MAX_FILE_SIZE? Kann ich die Zeile weglassen?


    Im HtmL schon. Allerdings solltest Du MAX_FILE_SIZE im PHP-Script abfangen / abfragen. Der Sicherheit halber. 8MB können per PHP übertragen (upgeloadet) werden, was die Obergrenze ist.

    momar-blog schrieb:
    In welcher Einheit ist die Größe?


    Bytes.

  8. Autor dieses Themas

    momar-blog

    momar-blog hat kostenlosen Webspace.

    OK, danke für all die guten Antworten, jetzt stimmt alles, bitte Thema schließen.
  9. Hallo Leute ich habe mir den Frust geholt
    sowohl Browserbasierter Upload klappt nicht
    als auch ftp upload geht nicht
    kann Datei icht anlegen !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


    Kann Zieldatei nicht anlegen
    Die Operation ist nicht erlaubt !!!!!!!!!!!!!!!!

    Das ist eindeutig 1!!!!!!!!!!!

    Ich denke ich werde den Account loeschen !!!!!!!!!!!!!!!!!!

    oder weiss jemand warum keien Schreibrechte freigegeben werden ? ????
  10. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    bruess schrieb:
    Hallo Leute ich habe mir den Frust geholt
    sowohl Browserbasierter Upload klappt nicht
    als auch ftp upload geht nicht
    kann Datei icht anlegen !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


    Kann Zieldatei nicht anlegen
    Die Operation ist nicht erlaubt !!!!!!!!!!!!!!!!
    Das hat 1. nichts mit dem Thema hier zu tun und 2. gibts die Lösung hier. Das solltest du dir durchlesen, und wenn du das machst was der TE dort gemacht hat wird es bei dir auch funktionieren.
  11. und bitte loesch diesen account oder gib eine klare loesung AUF EINE EINFACH FRAGE EGAL WO SIE STEHT !!!!!!!!!!!!
    (Nachtreglich gekuerzt : )

    wir schenken uns das
    da deine naechste Antwort es endlich auf den Punkt bingt (danke !)
    hoffentlich geht es mit der Probölemloesung (Nach Ticket (Strafzettel?) Erstellung jetzt auch noch ..

    Beitrag zuletzt geändert: 2.6.2012 11:23:57 von bruess
  12. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    bruess schrieb:
    und bitte nicht von einer Seite mit fuer mich nichtssagenden threads Bitte bitte nur ein link zum Abmelden oder eine klare Antwort
    click hier und gut ist ....
    War die Antwort nicht klar genug?

    Du schreibst ein Ticket, darin beschreibst du was dein Problem ist, die Administrative schaut sich das an und behebt den Fehler.

    Achja, wenn du den Account löschen möchtest weil du kein Ticket schreiben willst kannst du das hier machen ;-)
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!