probleem met upload script

Status
Niet open voor verdere reacties.

Ikoster

Gebruiker
Lid geworden
19 okt 2009
Berichten
144
beste programeurs
ik heb een upload script samengesteld.
helaas moet ik vast stellen dat hij niet helemaal goed werkt.
het systeem is zo opgesteld dat als het type bestand niet herkent wordt dit ge-emailt wordt.
maar, helaas als eindelijk het e-mailtje binnen komt staat er op de plaats van het type bestand een spatie.

ziet iemand een fout?
of een verbetering?

met vele malen dank,
ikoster:thumb:
PHP:
session_start();
$ip = $_SERVER['REMOTE_ADDR'];
$headers = '_geheim_';
if ((
   ($_FILES["file"]["type"] == "image/gif") 
or ($_FILES["file"]["type"] == "image/jpeg") 
or ($_FILES["file"]["type"] == "image/pjpeg") 
or ($_FILES["file"]["type"] == "image/x-png")
or ($_FILES["file"]["type"] == "text/html")
or ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
) and ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
		$_SESSION["uperr"] = "<font color='#ff0000'>".$_FILES["file"]["error"]."</font>";
		mail("_geheim_", "error bij upload", "Return Code: \n".$_FILES["file"]["error"]."\n\n$ip", $headers);
		header("location: index.php?page=login");
    }
  else
    {
		$_SESSION["uperr"] = "<font color='#008000'>".$_FILES["file"]["name"]." is geupload!</font>";
		mail("_geheim_", "bestand upgeload", "Upload: " . $_FILES["file"]["name"] . "\n"."Type: " . $_FILES["file"]["type"] . "\n" . "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb\n"."Temp file: " . $_FILES["file"]["tmp_name"] . "\n"."Stored in: " . "bestanden/_geheim_/" . $_FILES["file"]["name"]."\n"."\n\n$ip", $headers);
    move_uploaded_file($_FILES["file"]["tmp_name"],"bestanden/_geheim_/" . str_replace(" ","_",$_FILES["file"]["name"]));
		copy("bestanden/_geheim_/".$_FILES["file"]["name"] ,"bestanden/_geheim_/backup/".$_FILES["file"]["name"]);
		header("location: index.php?page=login");
    }
  }
else
  {
	$_SESSION["uperr"] = "<font color='#ff0000'>".$_FILES["file"]["type"]." is geen toegestaand bestand</font>";
	mail("_geheim_", "error bij upload", "Invalid file type:".$_FILES["file"]["type"]."\n".($_FILES["file"]["size"] / 1024) . " Kb"."\n\n$ip", $headers);
	header("location: index.php?page=login");
  }
 
Weet je zeker dat dit formulier alleen aangeroepen worden als je daadwerkelijk een file upload? Zo te zien komt hij ook in de onderste case terecht wanneer je niks upload, in welk geval je idd een spatie zult zien.
 
hoi,
bedankt voor het snelle reageren!
nee het script word aangeroepen met het script onderaan.
maar mischien is dit een deel van de fout?
kan hier naar gekeken worden want dan nog zie ik de fout niet.
mischien moet het script gewoon een klein beetje worden aangepast.
als dat kan zou ik daar heel blij mee zijn.
:thumb:

HTML:
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<input type="hidden" name="upload" value="1" />
Selecteer een bestand: <input name="file" type="file" /><br />
<input type="submit" value="upload bestand" />
</form>
 
Kun je na de upload eens gewoon een var_dump doen van de hele $_FILES array en kijken wat er in zit? Misschien heb je de opbouw verkeerd oid.

En nog een var_dump() onderaan ipv de "mail" en de header uitzetten zodat je het ook ziet.

Ik zie zo ook niks fouts...
 
en nu?

hoi,
ik heb gedaan wat werd voorgesteld en dit kwam eruit:

PHP:
	var_dump("$_FILES");
	echo"<br />";
	var_dump("file");

output:
string(5) "Array"
string(4) "file"

wat betekend dit?
:thumb:
 
Wat dacht je van dit script vrij te gebruiken zonder auteurinfo te verwijderen zie readme.txt op de repos
PHP:
<?php
include($autosite['functions']."GD/resizer.inc");
//echo "<div classe='right'><a href=\"$_SERVER[PHP_SELF]?key=".$kkey."&upload=1&id=".$path." \">Volgende upload</a><br>";
/**
 * 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
 * opensource http://code.google.com/p/autosite/ 
*/
class upload{
	private $UPL_trueext;
	private $maximgsize;
	private $links =array();
	/**
	 * @param $FILES	your $_FILES by reference
	 * @param $formdata	alle fields that can upload $formdata['items'][fieldname]
	 * @param $trueext	al true extentions array(".gif",".png")
	 * @param $to path	the path to move
	*/
	public function upload(&$FILES,&$formdata,$trueext,$topath){
		$this->UPL_trueext = $trueext;
       	if($FILES!=null&& is_array($FILES)){
       		foreach($FILES as $key=>$value){ //watch all sended files      			
       			if(array_key_exists($key,$formdata['items'])){//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];
								//todo is there a file uploaded
								if(self::isfile($namevalue,$value['error'][$kkey])){
									self::saveuploadedfile($tmpname,$namevalue,$topath,$key);
								}
							}
						}else{//normal single upload
							$tmpname =$value['tmp_name'];
							self::saveuploadedfile($value['tmp_name'],$value['name'],$topath,$key);	
						}
					}
       			}
				//print_r($_FILES);
			}
		}
	}
	private function isfile($filename,$error){
		if ($this->is_trueext($this->getext($filename))){
			return $error<1;
		}
	}

	public function getlinks(){
		return $this->links;
	}
	private function is_trueext($ext){
       	return in_array($ext,$this->UPL_trueext);
	}
	private function getext($filename){
		//$exts = split("[/\\.]", $filename);
		//$n = count($exts)-1;
		//$ext = $exts[$n];
       	return (string)strtolower(strrchr($filename,'.'));
	}
	private function saveuploadedfile($tmpfile,$filename,$topath,$from="upload_"){
			if(!is_file($topath.$from.$filename)){
				$len = sizeof($this->links[$from]);
				$this->links[$from][$len]= $topath.$from.$filename;
				return move_uploaded_file($tmpfile,$topath.$from.$filename);
			}else{
				false;
			}
	}
	private function test(){
       print $_FILES['imgfile']['type'];
       print $_FILES['imgfile']['name'];
       print $_FILES['imgfile']['size'];
       print $_FILES['imgfile']['err'];
       print $_FILES['imgfile']['tmp_name'];
       //print_r($_FILES);
	}
	public function generatethump($height = 150,$with=0){
		if($ispic){
			$resizer = new resizer($_FILES);
			$resizer->MOVEthumppic_to();
			$resizer->MOVErealpic_to();
		} 
	}
}

?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan