Anzeige:
Ergebnis 1 bis 10 von 10

Thema: uploader

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.03.2005
    Beiträge
    11

    uploader

    hat mal jemand ein kleines funktionierendes script für einen Uploader für images, sollte aber auch sicher sein, das ich nur jpg und gif hochladen kann
    und muss ich da vorher auf dem server irgendwas mit chmoddurchführen?

  2. #2
    MadMax
    Gast
    hi,
    ein script hab ich nicht zur hand, aber eine gute grundlage findest du --> hier

  3. #3
    Registrierter Benutzer
    Registriert seit
    03.04.2002
    Beiträge
    112
    Ich habe eine Gallery vor kurzem mit Uploader geschrieben, allerdings ist das mit dem ganzen Klassendesign so eingebaut, dass ich dir keine datei geben kann die z.B. upload.php heisst und die funktioniert, aber evtl kann ich dir bei deinen Problemen helfen?

    Mfg, Matflasch
    Verteilt die Macht, dass sie keinen mächtig macht!

  4. #4
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    Ich schon:
    PHP-Code:
    <?php
        
    /**
         * This program is free software; you can redistribute it and/or modify
         * it under the terms of the GNU General Public License as published by
         * the Free Software Foundation; either version 2 of the License, or
         * (at your option) any later version.
         *
         * This program is distributed in the hope that it will be useful,
         * but WITHOUT ANY WARRANTY; without even the implied warranty of
         * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         * GNU General Public License for more details.
         * 
         * You should have received a copy of the GNU General Public License
         * along with this program; if not, write to the Free Software
         * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
         **/

        /**
         * This class helps to upload a file to a special directory.
         *
         * @author Gostner, Christoph
         * @since 2004-??-?? (summer)
         * @copyright 2004
         * @version 0.02
         **/
        
    class Upload 
        
    {
            var 
    $target;
            var 
    $filecopy;
            var 
    $filedata;
            var 
    $arrReport;
            var 
    $maxSize;
            var 
    $bcopy;

            
    /**
             * The constructor sets all attributes.
             *
             * @param $dir The file's target.
             * @param $uploadfile The file to upload/to move to the directory.
             * @param $maxSize The maximum size of the file.
             **/
            
    function Upload($dir,$uploadfile,$maxSize)
            {
                
    $this->bcopy TRUE;
                
    $this->target $dir;
                
    $this->filecopy $uploadfile;
                
    $this->arrReport = array();
                
    $this->maxSize $maxSize;
                foreach( 
    $GLOBALS[HTTP_POST_FILES] as $key => $val )
                {
                    
    $this->filedata $val;
                }
            }

            
    /**
             * Controls
             *  - If the file in the directory doesn't exist.
             *  - If the file isn't bigger then the maximum size and not zero.
             *  - That the file is no backup file (ends with '~').
             *  - That the file's target is writeable.
             *
             * If no case is true the file will be copied. Else some error messages
             * are printed.
             **/
            
    function copy()
            {
                
    $path $this->target."/".$this->filedata[name];

                if ( 
    file_exists($path) ) 
                {
                    echo 
    "Error: File already existes!<br>\n";
                    
    $this->bcopy FALSE;
                }

                if ( 
    $this->filedata[size] > $this->maxSize || $this->filedata[size] == 0)
                {
                    echo 
    "Error: File to big or empty!<br>\n";
                    
    $this->bcopy FALSE;
                }
                
                if ( 
    substr$this->filedata[name], strlen($this->filedata[name])-1,strlen($this->filedata[name])-) == "~" )
                {
                    echo 
    "Error: File seems to be a backup-file!<br>\n";
                    
    $this->bcopy FALSE;
                }

                if ( !
    is_writable($this->target) )
                {
                    echo 
    "Error: Directory is not writeable!<br>\n";
                    
    $this->bcopy FALSE;
                }

                if ( 
    $this->bcopy 
                {
                    
    copy($this->filecopy,$path);
                    
                    
    $this->arrReport = array( "Name" => $this->filedata[name],
                                  
    "Size" => $this->filedata[size] );
                }
            }
            
            
    /**
             * If the file was copied this method prints the file's name and size.
             **/
            
    function getResults() 
            {
                if ( 
    $this->bcopy )
                {
                    foreach( 
    $this->arrReport as $key => $val
                    {
                        echo 
    $key ": ".$val."<br>\n";
                    }
                }
            }
        }
    ?>
    Ok, ist nicht ganz ausgereift, und du musst noch die Ueberpruefung hinzufuegen, dass wirklich nur Bilder hochgeladen werden koennen. Sollte aber helfen.
    (Verzeih mein miserables English).
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  5. #5
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    Ach ja, die Schleife im "Konstruktor" koennte man auch umtauschen, hatte die Klasse mal dafuer gedacht mehrere Dateien gleichzeitig hochzuladen, habs dann aber umgeschrieben, und da es nicht stoert hab ich die Schleife einfache dort stehen lassen!
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.12.2004
    Beiträge
    217
    Habe gehört das es eine Sicherheitslücke in < PHP 4.3.10 und < PHP 5.0.3 gibt, wo beim Verarbeiten von JPEG-Dateien auftritt. Weis da jemand näheres?

    Gruß
    nEox

  7. #7
    Registrierter Benutzer
    Registriert seit
    04.03.2005
    Beiträge
    11
    ja danke erstmal für die hilfe, der uploader steht ja erst mal, aber irgendwie komm ich nicht auf den server.
    muss ich da vorher irgendeiner datei rechte vergeben??

  8. #8
    Registrierter Benutzer
    Registriert seit
    03.04.2002
    Beiträge
    112
    Bei meinem Uploader war es so, dass der FTP User dann ein anderer war als der, den PHP benutzt hat, ich habe das mit:
    http://de3.php.net/manual/de/function.ftp-site.php
    gelöst. Dann ging alles.

    Evtl ist das ja auch das Problem bei dir.

    Ansonsten muss der Ordner, in dem die Daten gespeichert werden chmod 777 haben?
    Habs jedenfalls für das Upload Dir gesetzt und es klappt.

    Mfg, Matflasch
    Verteilt die Macht, dass sie keinen mächtig macht!

  9. #9
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    Also 777 ist doch uebertrieben, dann kann wirklich jeder dort was reinschreiben der gerade lust und laune hat (wenn er z.B. eine Sicherheitslueche gefunden hat - ich sag ja nicht, dass meine Skripte nicht Fehleranfaellig sind).
    774 ist glaub ich das maximum, was ich riskieren wuerde. Da ich obiges Skript aber momenatn auch nicht in Benutzung habe kann ich auch nicht sagen wo ein Fehler liegen koennte.
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  10. #10
    Registrierter Benutzer Avatar von Giuly
    Registriert seit
    28.04.2003
    Ort
    HB-Nord
    Beiträge
    201
    Ich wollte nur sagen, dass ich lieber auf image/jpeg, image/gif und image/png überprüfen würde, als auf .jpg, .gif und .png

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •