php ulpoad script ?help hoe meot ik deze combineren??

Status
Niet open voor verdere reacties.

frnak74

Nieuwe gebruiker
Lid geworden
14 jun 2018
Berichten
2
Ik heb een upload script en de code voor vertificatie bestandsformaat en bestandsgrote maar kan iemand me helpen hoe deze te combineren??
ik kom er niet uit van alles geprobeerd, ben er niet in thuis en het lukt niet het werkend te krijgen ik zal wel iets niet goed doen.
dit script werkt:

<?php

// Set Upload Path
$target_dir = 'files/';

if( isset($_FILES['fileUpload']['name'])) {

$total_files = count($_FILES['fileUpload']['name']);

for($key = 0; $key < $total_files; $key++) {

// Check if file is selected
if(isset($_FILES['fileUpload']['name'][$key])
&& $_FILES['fileUpload']['size'][$key] > 0) {

$original_filename = $_FILES['fileUpload']['name'][$key];
$target = $target_dir . basename($original_filename);
$tmp = $_FILES['fileUpload']['tmp_name'][$key];
move_uploaded_file($tmp, $target);
}

}

}

?>
-------------------------
Maar hoe moet ik deze hierin zetten:??
------------------------------
// Get the extension
$ext = strtolower(pathinfo($_FILES["fileUpload"]["name"][$key], PATHINFO_EXTENSION));

// check extension and upload
if( in_array( $ext, array('jpg', 'jpeg', 'png', 'gif', 'bmp'))) {
// Filetype if valid, process uploading
}
------------------------------
en deze:??
------------------------------
$maxFileSize = 5 * 1024 * 1024; //5MB
$errors = array();

if($_FILES['fileUpload']['size'][$key] > $maxFileSize){
$errors[$key] = 'File size is greater than allowed size';
}
 
dus ongeveer op die mannier
PHP:
<?php
// Set Upload Path
$target_dir = 'files/';
if (isset($_FILES['fileUpload']['name'])) {
    $total_files = count($_FILES['fileUpload']['name']);
    for ($key = 0; $key < $total_files; $key++) {
        // Check if file is selected
        if (isset($_FILES['fileUpload']['name'][$key]) && $_FILES['fileUpload']['size'][$key] > 0) {
            $original_filename = $_FILES['fileUpload']['name'][$key];
            if(is_valid_extention($_FILES["fileUpload"]["name"][$key])){
                if(is_valid_size($_FILES["fileUpload"]["name"][$key])){
                $target = $target_dir . basename($original_filename);
                $tmp = $_FILES['fileUpload']['tmp_name'][$key];
                move_uploaded_file($tmp, $target);
                }else{
                    print 'oei u hebt een file opgestuurd die iet te groot is <h1>u mag er echter niet op vertouwen wat een gebruiker opstuurt dus effective controle is beter(filesize op harddisk)</h1>';
                }
            }else{
                print 'oei u hebt een file opgestuurd die niet aanvaard wordt <h1>u mag er echter niet op vertouwen wat een gebruiker opstuurt dus effective controle is beter(contenttype)</h1>';
            }
        }
    }
}
/**
-------------------------
Maar hoe moet ik deze hierin zetten:??
------------------------------
// Get the extension
// check extension and upload
*/
function is_valid_extention($filename){
    $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
    return in_array( $ext, array('jpg', 'jpeg', 'png', 'gif', 'bmp'));
    // Filetype if valid, process uploading
}
/**
------------------------------
en deze:??
------------------------------
*/
function is_validate_size(){
    $maxFileSize = 5 * 1024 * 1024; //5MB
    $errors = array();
    if($_FILES['fileUpload']['size'][$key] > $maxFileSize){
        $errors[$key] = 'File size is greater than allowed size';
    }
} 
?>
er is een mogelijkheid om met een classe te werken zoals voorbeeld zie ook de nog niet aangevulde crime checks
PHP:
<?php
/**
 * http://be.php.net/manual/en/features.file-upload.common-pitfalls.php
 * http://be.php.net/manual/en/features.file-upload.multiple.php 
 * @author Lieven Roegiers
 * @copyright 2009 
 * @CMS autosite
 * Todo make links for multilink uploading
*/
namespace autosystem;
class Upload{
	private $UPL_trueext;
    private $UPL_trueContenttypes;
	private $maximgsize;
	private $links =array();
    private $onlyimages = false;
	/**
	 * @param $FILES	your $_FILES by reference
	 * @param $formitems	alle fields that can upload $formitems[fieldname]
	 * @param $trueext	al true extentions array(".gif",".png")
	 * @param $to path	the path to move
	*/
	public function load(&$FILES,&$formitems,$trueext,$topath,$userid ='0000'){
		$this->UPL_trueext = $trueext;
       	if($FILES!=null&& is_array($FILES)){
       		foreach($FILES as $key=>$value){    			
       			if(is_array($formitems)&& in_array($key,$formitems)){//is the file askt in form
					if($value['name']!=null ){//if there is a upload 
						if(is_array($value['name'])){//complex multiple upload
							foreach($value['name'] as $kkey=>$namevalue){
								$tmpname = $value['tmp_name'][$kkey];
								if(self::isfile($namevalue,$value['error'][$kkey])){
									self::saveuploadedfile($tmpname,$namevalue,$topath,$userid.'_'.$key);
								}
							}
						}else{
							$tmpname =$value['tmp_name'];
							self::saveuploadedfile($value['tmp_name'],$value['name'],$topath,$userid.'_'.$key);	
						}
					}
       			}else{
       				print 'upload.inc key not exist';
       			}
			}
		}
	}
    private function validate($filename,&$data_arr,$fieldname){
       $ext = $this->getext($filename);
       return ($this->is_trueext($this->getext($filename))&& $data_arr['error'][$fieldname]<1);
    }
    /**
     * Upload::checkasimg()
     * @param mixed  $_FILES['file']['type']
     * @return
     */
    private function checkasimg($type){
        return eregi('image/',$type);//@TODO UPGRADE TO 7
    }
    private function getmime(){
         $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
         $fileatt_type  = finfo_file($finfo, $filename); //$fileatt_type = mime_content_type($filename);(OLD CODE)
           /**
            * $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
              $fileatt_type  = finfo_file($finfo, $filename); //$fileatt_type = mime_content_type($filename);(OLD CODE)
           */ 
    }
	/**
	* @param $filename	string of the filename for get ext
	* @param $error	$value['error'][$kkey]   =>404 or anything else
	* @return true/false
	*/
	private function isfile($filename,$error){
		return $this->is_trueext($this->getext($filename));
	}
	/**
	* @return asoarray of the link to the files
	*/
	public function getlinks(){
		return $this->links;
	}
	/**
	* @param $ext	can use ext+
	* @return true/false
	*/
	private function is_trueext($ext){
       	return in_array($ext,$this->UPL_trueext);
	}
	/**
	* @param $filename the name of the file
	* @return string extention and the point
	*/
	private function getext($filename){
		//$exts = split("[/\\.]", $filename);
		//$n = count($exts)-1;
		//$ext = $exts[$n];
       	return (string)strtolower(strrchr($filename,'.'));
	}
    /**
	* @param $ext	can use ext
	* TODO make control for mimes
	* @return true/false
	*/
	private function is_trueContent($content){
       	return in_array($content,$this->UPL_trueContenttypes);
	}
	/**
	* @param $tmpfile the name of the file to temp dir server
    * @param $filename new name on the server
    * @param $topath  the path on the server where we save the img
	* @return string extention and the point
	*/
	private function saveuploadedfile($tmpfile,$filename,$topath,$from='upload_'){
			if(!is_file($topath.$from.'_'.$filename)){
				$len = sizeof($tmpfile);//$len = sizeof($this->links[$from]);
				$this->links[$from][$len]= $topath.$from.'_'.$filename;
                if(!is_dir($topath)){print('Dir not exist'.$topath); }
				return move_uploaded_file($tmpfile,$topath.$from.'_'.$filename);
			}else{
				false;
			}
	}
	public function generatethump($height = 150,$with=0){
		if($ispic){
			$resizer = new resizer($_FILES);
			$resizer->MOVEthumppic_to();
			$resizer->MOVErealpic_to();
		} 
	}
    private function checkfileinjection(&$data){
        //https://access.redhat.com/security/vulnerabilities/2296071
        //"wget" -q -O "%o" "https:%M"
    }
    static private function isInfected($string){
        //< script src = http://www.nihaorr1.com/1.js >
        $checks = ['/script/i','/pack/i'];
        foreach($checks as $check){
            if(preg_match($check,$string)){return true; }
        }
        return false;
    }
    static private function isCryptoInfected($local,$codeString){
        //<?php @eval(
        //<?php eval(
        $checks =['/eval/i','/pack/i','/gzinflate/i'];
        foreach($checks as $check){
            if(preg_match($check,$string)){return true; }
        }
        return false;
    }
    static private function isPDFInfected($local,$string){
        $checks =['/OpenAction/i','/DOS/i','/C:\\/i','/Launch/i'];
        foreach($checks as $check){ 
            if(preg_match($check,$string)){return true; }
        }
        return false;
    }
    static public function checkIsFileOK($filename){
       $preline ='' ;
       if( $file = fopen($filename,'r+')){
            while(!feof($file)){
    	    	$line= fgets($this->file, 4096);
                if($this->isInfected($preline.$line)){
                    return false;
                }
                $preline = $line;
    		}
        }
        return true;
    }
}

?>
 
Vergeet ook niet te zeggen dat je dit ook op phphulp hebt geplaatst. Wel zo vriendelijk, zodat we dat ook kunnen kijken naar hun oplossingen en de voortgang van jouw probleem.
 
bedankt voor de antwoorden, ik heb ondertussen wel begrepen dat het beter is een veiligere variant te gebruiken (verot.net), ik ga me daar maar in verdiepen...
 
Vergeet ook niet te zeggen dat je dit ook op phphulp hebt geplaatst. Wel zo vriendelijk, zodat we dat ook kunnen kijken naar hun oplossingen en de voortgang van jouw probleem.
Nu dat iemand om een andere site ook een vraag steld hoef ik zelfs niet te weten. Dubbele posts is in het leven geroepen omdat er sommigen op één forum 30 keer de zelfde vraag stelden (dit is mannier die je kan terugvinden tweedehandssites ook iemand die 50keer het zelfde artikel aanbied)
Ik hoop dat er een regel in het leven wordt geroepen dat men iets zinnig of een poging tot iets zinnig verplicht dient bij te brengen.
 
Nu dat iemand om een andere site ook een vraag steld hoef ik zelfs niet te weten. Dubbele posts is in het leven geroepen omdat er sommigen op één forum 30 keer de zelfde vraag stelden (dit is mannier die je kan terugvinden tweedehandssites ook iemand die 50keer het zelfde artikel aanbied)
Ik hoop dat er een regel in het leven wordt geroepen dat men iets zinnig of een poging tot iets zinnig verplicht dient bij te brengen.

Late reactie. Misschien hoef jij het niet te weten, maar anderen wel. Zo kunnen ze ook de de andere discussies zien, en mogelijk zelfs of het nog zinnig is om te reageren als iets via de andere site opgelost is. Niet is zo vervelend om een reactie te geven met een oplossing terwijl diegene al op een andere forum de oplossing heeft gevonden. Resultaat: Verspilde moeite voor de helper.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan