Avatar System (Bilder hochladen)

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

  • Avatar System (Bilder hochladen)

    Hallo,
    ich würde gerne das einige User bei mir Avatare hochladen können. Ich würde das dann alles mit Mysql verknüpfen, aber soweit bin ich noch nicht. Mein Upload script funktioniert iwie nicht. Daher hab ich gegoogelt und einige Scripts ausprobiert, aber alle haben bei mir nicht funktioniert. Der einzige bei dem ich weiterkomme ist der Quelltext siehe unten. Aber auf meinem Webhosting Server werden keinerlei Daten hochgeladen. Könntet ihr den Quelltext vieleicht überfliegen? Ich verstehe es einfach nicht. Mit $_FILE hab ich auch noch keinen Erfolg erzielt. Oder ggf mir einen auschnitt geben, wie euer Upload Script funktioniert. Weil ich steig da irgendwie noch nicht durch

    PHP-Code:
    <?php 
    if($_POST[avaversuch] == '1'){
    $path "/avatar/"// Url zum Speicher Ordner 
    $filename "test"
    $deindomain "http://meinlink.net"
    $time=time(); 
    if (
    $HTTP_POST_FILES['userfile']['tmp_name']<> 'none'
       {    
             
    $file $HTTP_POST_FILES['userfile']['name']; 
             
    $temp $HTTP_POST_FILES['userfile']['tmp_name']; 
             
    $path_parts pathinfo($file); 
             
    $filename "test_" $time "." $path_parts["extension"]; 
               
    $dest $path.$filename
        
             
    copy($temp$dest); 
        
          echo 
    "Die Datei ist auf dem Server! <br><br>"
          echo 
    "Url der Datei: <a href=\"$deindomain$path$filename\" target=\"_blank\">".$deindomain.$path.$filename
         echo 
    "</a>"
       } 
    } else { 
    ?> 

    <form method="post" enctype="multipart/form-data" action="index.php?menu=avatar"> 
    <input type="hidden" name="MAX_FILE_SIZE" value="400000"> 
    <br> 
    <strong>File Upload</strong> <br> 
    <br> 
    <input name="userfile" type="file" size=40> 
    <br> 
    <br> 
    <input type="submit" name="action" value="Speichern"><input type="hidden" name="avaversuch" value="1">
    </form><? } ?></body> 
    </html>
    By Outman

  • #2
    Hallo und willkommen im Forum,

    bitte lesen: PHP: Steuerung von Dateiuploads - Manual

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Ich bin genau nach
      PHP: Dateiuploads mit POST - Manual
      gegangen.

      PHP-Code:
      <?php 
      // In PHP kleiner als 4.1.0 sollten Sie $HTTP_POST_FILES anstatt 
      // $_FILES verwenden. In PHP kleiner als 4.0.3 verwenden Sie copy() 
      // und is_uploaded_file() anstatt von move_uploaded_file()

      $uploaddir '/var/www/uploads/';
      $uploadfile $uploaddirbasename($_FILES['userfile']['name']);

      print 
      "<pre>";
      if (
      move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
          print 
      "File is valid, and was successfully uploaded.";
          print 
      "Here's some more debugging info:\n";
          
      print_r($_FILES);
      } else {
          print 
      "Possible file upload attack!  Here's some debugging info:\n";
          
      print_r($_FILES);
      }
      print 
      "</pre>";

      ?>
      Aber... ich habe keinerlei Upload auf dem Server bekommen.
      Könnte möglicherweise an $uploaddir liegen.
      Da ich ein Webhosting Server habe, kann ich den vollständigen Pfad nicht erkennen. Hab ja nur zugriff auf meine Domain.


      [Edit]
      Wenn ich $uploaddir = './'; setze, springt er in den Upload If. Wenn ich meinen normalen Pfad angebe springt er immer in die Else If.
      Zuletzt geändert von Frittenfett; 11.07.2010, 15:17.

      Kommentar


      • #4
        Zitat von Frittenfett Beitrag anzeigen
        Da ich ein Webhosting Server habe, kann ich den vollständigen Pfad nicht erkennen. Hab ja nur zugriff auf meine Domain.
        Dann kannst du auch relativ zum Arbeitsverzeichnis arbeiten (z. B. "../uploads") oder relativ zum Scriptverzeichnis, z. B.
        PHP-Code:
        dirname(__FILE__) . "/../uploads" // vor PHP5.3
        __DIR__ "/../uploads" // ab PHP5.3 
        In vielen Fällen sind Arbeitsverzeichnis und Scriptverzeichnis identisch, aber nicht immer.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Scheint jetzt irgendwie zu funktionieren, seitdem ich alle Datein von 755 auf 777 gesetzt habe. Nur ein Problem besteht noch.

          PHP-Code:
          $uploaddir './'
          Damit speichert er alles in den Hauptordner. Wie kriege ich es in den Unterordner "avatar"?

          PHP-Code:
          $uploaddir './avatar'
          In diesem Fall schreibt er bei mir vor jeder Datei "avatar" z.B. avatarKekse.jpg
          Was genau habe ich falsch gemacht?

          Kommentar


          • #6
            Zitat von Frittenfett Beitrag anzeigen
            Was genau habe ich falsch gemacht?
            … den Pfadseparator vergessen:
            PHP-Code:
            $uploaddir './avatar/'
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Zitat von AmicaNoctis Beitrag anzeigen
              … den Pfadseparator vergessen:
              PHP-Code:
              $uploaddir './avatar/'
              Jetzt bekomme ich immer einen Internal Server Error. Liegt wohl am hoster. Sollte ich wohl alles in den Hauptordner speicher, ist zwar unübersichtlicher... aber geht wenigstens xD

              Internal Server Error

              The server encountered an internal error or misconfiguration and was unable to complete your request.

              Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

              More information about this error may be available in the server error log.

              Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

              [EDIT]
              Vergisst was da oben steht. Funktioniert super! Vielen Dank! Gibt es ne möglichkeit, die Upgeloaddete Datei automatisch umzubenennen?
              Zuletzt geändert von Frittenfett; 11.07.2010, 15:45.

              Kommentar


              • #8
                Zitat von Frittenfett Beitrag anzeigen
                Gibt es ne möglichkeit, die Upgeloaddete Datei automatisch umzubenennen?
                Den Namen gibst du doch bei move_uploaded_file selber an ...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  PHP-Code:
                      $name 'irgendeinname';
                      
                  $pic getimagesize($_FILES['photo']['tmp_name']);
                      switch (
                  $pic['mime']) {
                          case 
                  'image/gif':
                              
                  $ermsg '';
                              
                  $ext '.gif';
                              break;
                          case 
                  'image/jpeg':
                              
                  $ermsg '';
                              
                  $ext '.jpg';
                              break;
                          case 
                  'image/png':
                              
                  $ermsg '';
                              
                  $ext '.png';
                              break;
                          default:
                              
                  $ermsg 'Kein erlaubtes Bildformat!';
                              break;
                      }

                      if(empty(
                  $ermsg)) {
                          if(
                  move_uploaded_file($_FILES['photo']['tmp_name'],'./some/dir/path/'.$name.$ext)) {
                              echo 
                  'Bild erfolgreich hochgeladen';
                          } else {
                              echo 
                  'Bild konnte nicht hochgeladen werden';
                          }
                      } else {
                          echo 
                  $errmsg;
                      } 
                  hat den vorteil das nur jpg, gif und png auf den server geladen werden können... und keine sonstigen böswilligen dateien (c99.php z.B.)

                  Kommentar


                  • #10
                    Könnte man dies auch nicht einfach in eine IF Abfrage bringen?

                    PHP-Code:
                    if($_FILES['userfile']['type'] == "image/gif" || 
                    $_FILES['userfile']['type'] == "image/jpeg" ||
                    $_FILES['userfile']['type'] == "image/png")
                    {
                    Bild hochladen Script
                    } else {
                    echo 
                    'Kein erlaubtes Bildformat!';

                    Kommentar


                    • #11
                      Zitat von Frittenfett Beitrag anzeigen
                      Könnte man dies auch nicht einfach in eine IF Abfrage bringen?
                      Wenn es nur um die Prüfung geht, dann könnte man es sogar noch kompakter mit in_array machen.

                      Im vorherigen Beispiel wird aber auch noch die Dateiendung, unter der die Datei abgelegt werden soll, abhängig vom Typ vorgegeben. (Das könnte man ebenfalls mit einem Array realisieren.)
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Zitat von Frittenfett Beitrag anzeigen
                        Könnte man dies auch nicht einfach in eine IF Abfrage bringen?
                        Du hast doch gefragt wie man den dateinamen ändern kann... Das meine Switch abfrage lang ist, weiss ich... aber so kannst du sicher sein das dass script nicht manipuliert werden kann... ausserdem brauchst du eine dateiendung wenn du den namen der datei änderst...

                        Ich fahre mit dem aufbau ziemlich lange und noch nie probleme...

                        Kommentar

                        Lädt...
                        X