Ik heb een paar problemen met mijn script

ik wil graag namelijk plaatjes uploaden en dan tegelijk de naam in de DB toevoegen zodat een ander script (die wel werkt) het er uit kan halen en netjes plaatjes kan weergeven.

kunnen jullie mij met mijn probleem helpen?

hier het script dat ik nu heb (en niet werkt) :


<?php
 
include("connect.php");
 
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 
$file_name = basename($_FILES['userfile']['name']);
$spatie = '&nbsp;&nbsp;&nbsp;';
$datum = date('Y-m-d H:i:s');

$filesize     = $_FILES['userfile']['size'];
 
 
 
if     (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
		move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
		
		mysql_query ("INSERT INTO jeroen_foto (`naam`,`dir`,`size`,`spatie`,`datum`) VALUES ('".$file_name."','".$uploaddir."','".$filesize."','".$spatie."','".$datum."')") or die (mysql_error()); 
		mysql_close();
		
 		echo "Afbeelding staat op de server<br><br>";
    
    }
	
else 
{
	echo "Possible file upload attack!\n";
}
 

?>
 

<form action="foto-toevoegen.php" method="post">
Foto: <input type="file" name="userfile" /><br />
<input type="submit" value="Upload File" />
</form>
De volgende stap is controleren of een $var bestaat. Zie onder andere [php]isset[/php]().
@tikkes:

Kun je een voorbeeld geven van hoe ik het zou moeten beveiligen?

zoals ik al zei ik ben een totale NOOB.......
Jeroen schreef op 21.09.2008 13:02
alloewel hij nu wel het plaatje heeft geupload en de naam enz in de database heeft gebracht

Zonder dat 'enctype="multipart/form-data"' zal <input type="file"> nooit werken. En de errors die je nu krijgt komen doordat je voor de eerste keer op de pagina komt en er is nog geen formulier gepost.
Jeroen schreef op 21.09.2008 13:04
@tikkes:

Kun je een voorbeeld geven van hoe ik het zou moeten beveiligen?

zoals ik al zei ik ben een totale NOOB.......



Ik deed t zo:


<?PHP

if (strtolower(substr($_FILES['defile']['name'], -3)) != "jpg" XOR strtolower(substr($_FILES['defile']['name'], -4)) != "jpeg" XOR strtolower(substr($_FILES['defile']['name'], -3)) != "gif") {

exit ('enkel fotos!');

}

?>
@Tikkes: En wat als de file 'blablajpg' heet?
je hebt toch altijd een extrensie nodig....blablajpg.exe

niet?

anders doe je gewoon telkens ipv -3, -4 en zet je != .jpg etc...
komt dat er dan zo uit te zien ? :

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
 


 
 
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 
$file_name = basename($_FILES['userfile']['name']);
$spatie = '&nbsp;&nbsp;&nbsp;';
$datum = date('Y-m-d H:i:s');

$filesize     = $_FILES['userfile']['size'];
 
 
 
if (strtolower(substr($_FILES['defile']['name'], -3)) != "jpg" XOR strtolower(substr($_FILES['defile']['name'], -4)) != "jpeg" XOR strtolower(substr($_FILES['defile']['name'], -3)) != "gif") {

exit ('enkel fotos!');

} 

else     (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
		move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
		
		mysql_query ("INSERT INTO jeroen_foto (`naam`,`dir`,`size`,`spatie`,`datum`) VALUES ('".$file_name."','".$uploaddir."','".$filesize."','".$spatie."','".$datum."')") or die (mysql_error()); 
		mysql_close();
		
 		echo "Afbeelding staat op de server<br><br>";
    
    }
	
else 
{
	echo "Possible file upload attack!\n";
}
 

?>
@Tikkes: Extensie is niet verplicht hoor.
Kijk naar 'mimetype'?

@Jeroen: Nou ontbreekt in ieder geval nog de veiligheid. Nooit onbeveiligde data in de database zetten. Lees eens over mysql-injection.
zo dan:


<?php
function checkfiletype($file,$ext){
if(strtolower(substr($file, -3)) != $ext){
return true;
}else{
return false;
}
}

function quote_smart($value){
if(get_magic_quotes_gpc()){
$value = stripslashes($value);
}
if(version_compare(phpversion(),"4.3.0") == "-1"){
return mysql_escape_string($value);
}else{
return mysql_real_escape_string($value);
}
}

ini_set('display_errors', 1);
error_reporting(E_ALL);

$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

$file_name = basename($_FILES['userfile']['name']);
$spatie = '&nbsp;&nbsp;&nbsp;';
$datum = date('Y-m-d H:i:s');

$filesize = $_FILES['userfile']['size'];



if (checkfiletype($_FILES['defile']['name'],'jpg') XOR checkfiletype($_FILES['defile']['name'],'gif') XOR checkfiletype($_FILES['defile']['name'],'jpeg') XOR checkfiletype($_FILES['defile']['name'],'JPG') XOR checkfiletype($_FILES['defile']['name'],'GIF') XOR checkfiletype($_FILES['defile']['name'],'JPEG')) {
exit ('Alleen foto\'s! (jpg, gif, jpeg)');
}else(is_uploaded_file($_FILES['userfile']['tmp_name'])) {

move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
mysql_query("INSERT INTO jeroen_foto (`naam`,`dir`,`size`,`spatie`,`datum`) VALUES ('".quote_smart($file_name)."','".quote_smart($uploaddir)."','".quote_smart($filesize)."','".quote_smart($spatie)."','".quote_smart($datum)."')") or die (mysql_error());
mysql_close();

echo "Afbeelding staat op de server<br><br>";

}

else
{
echo "Possible file upload attack!\n";
}


?>

Reageren