upload probleem php + mysql

Status
Niet open voor verdere reacties.

gambakoker

Gebruiker
Lid geworden
22 jun 2010
Berichten
6
Hallo mensen,

Ik ben bezig met het boek "Headfirst php & MySQL" van de uitgever O'reilly en daarin staat een opdracht waar je leert een file uploaden naar de server en deze vanuit de temp naar de correcte folder te verplaatsen met move_uploaded_file().

Nou heb ik dit gemaakt volgens het boek alleen doet het script niet het bestand uploaden en word ook de naam niet in de mysql database gestopt en als de pagina ververst geeft ie ook niet de bevestiging weer van: je hebt de afbeelding goed ingevoerd etc. enkel ververst de pagina, de naam en de score blijft staan maar de upload file word leeg gemaakt.

Mijn vraag aan jullie is, wat is er verkeerd in mijn script waardoor het de fout ingaat? ze zijn bijgevoegd op deze links:
http://www.codedump.be/code/859/ (addscore.php)
http://www.codedump.be/code/860/ (index.php)

De server is een ubuntu 10.04 x86 server met een standaard LAMP installatie.

=================================================================================
EDIT:
Heb het script nu werkend gekregen het lag niet aan de php code maar aan de server rechten. De mappen /tmp/ en images/ moesten allebei volledige schrijf en lees rechten krijgen (chmod 777) Dit probleem werd gevonden door php errors in php.ini aan te zetten. Hopelijk heeft iemand hier ook wat aan!

Gambakoker
 
Laatst bewerkt:
verander lijn 25 script1 verander lijn 16 script2 hoeven we niet te weten
Bestaat het path
bool is_dir ( string $filename )
en verder wil je toch uitbreiden een voorbeeld van multiple upload script kan veranderen moet je maar checken op de opensource repos
PHP:
<?php
//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);
	}
}

?>
 
Ja i know dat je dat niet bij een up en running website moet plaatsen maar het is al onzin alles is compleet anders ;) plus dat het in een VM draait en nog een keer alleen lokaal toegankelijk is dus zoveel had je ook niet gehad aan de echte info
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan