Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] jforms upload override

Posted by ling on 02/13/2009 13:12

Bonjour, le site que je suis en train de réaliser permet à l'utilisateur d'uploader ses photos. J'aimerais savoir s'il est possible d'overrider depuis le controller la méthode saveAllFiles() de la classe jFormsBase ?

A la place, j'aimerais utiliser cette méthode (pour des raisons de sécurité, car je pense que les vérifications sur le type MIME ne sont pas suffisantes étant donné qu'un utilisateur "doué" peut trafiquer son navigateur et faire passer un fichier pour un autre)

code

    public function saveAllFiles($path='') {
        if ($path == '') {
            $path = JELIX_APP_VAR_PATH.'uploads/'.$this->sel.'/';
        } else if (substr($path, -1, 1) != '/') {
            $path.='/';
        }

        if(count($this->uploads))
            jFile::createDir($path);
				
				// add by Ling
				$allowed_file_extensions = array('jpg','jpeg','gif','png');
				
        foreach($this->uploads as $ref=>$ctrl){

            if(!isset($_FILES[$ref]) || $_FILES[$ref]['error']!= UPLOAD_ERR_OK)
                continue;
            if($ctrl->maxsize && $_FILES[$ref]['size'] > $ctrl->maxsize)
                continue;
				
						//add by Ling (3 lines below)
						$fil_ext = strtolower(substr(strrchr($_FILES[$ref]['name'],'.'),1));
						if (!in_array($fil_ext,$allowed_file_extensions))
						continue;


            move_uploaded_file($_FILES[$ref]['tmp_name'], $path.$_FILES[$ref]['name']);
        }
    }

code

  [Opened] Re: jforms upload override

Reply #1 Posted by bballizlife on 02/13/2009 16:13

Je dirais surtout que la vérification doit se faire en amont. La méthode save est juste là pour s'occuper de faire l'upload et d'enregister les fichiers. A toi donc de vérifier avant d'appeler saveAllFiles() que les fichiers sont valides.


N'importe comment c'est dans la doc

 
Page
  1. Re: jforms upload override