upload werkt alleen met gif file

Status
Niet open voor verdere reacties.

parisdiesel

Gebruiker
Lid geworden
15 nov 2008
Berichten
94
Hallo, Ik probeer een beveiliging in mijn script te bouwen, maar met onderstaande code pakt tie alleen maar gif files, een jpg pakt hij niet, wat doe ik verkeerd?
alvast bedankt voor de reacties.

Code:
<?php
if(isset($_POST['btnSend'])){


$num = count($_FILES['upload']['name']) - 1;
for($i=0;$i<$num;$i++){
if (($_FILES["upload"]["type"][$i] == "image/gif")
  || ($_FILES["upload"]["type"][$i] == "image/jpg")
  || ($_FILES["upload"]["type"][$i] == "image/png" )
  && ($_FILES["upload"]["size"][$i] < 50000))
  {
	$name = $_FILES['upload']['name'][$i];
	$tmp  = $_FILES['upload']['tmp_name'][$i];
	$path = "uploads/$name";

	if(!move_uploaded_file($tmp,$path)){
		echo "<p style='color:red'>File: $name not uploaded</p>";
	}else{
$foto='uploads/'.$name;
	//echo "<p style='color:green'>File: $name uploaded<br /></p>";
	echo "<p style='color:green'>File: <img src=\"$foto\" height=\"216\" width=\"249\"> uploaded<br /></p>";
	}
}else{
echo 'foutje';
}  
 }

}
?>
<script type='text/javascript' src='jquery-1.4.min.js'></script>
<script type='text/javascript'>
function add(){
	$(document).ready(function(){
		$("#lbl").before("<input type='file' name='upload[]' id='upload[]' onChange='add()' /><br />");
	});
}
window.load(add());
</script>

<form id='frmUploadFiles' name='frmUploadFiles' action='<?PHP echo $_SERVER['PHP_SELF'];?>' method='post' enctype="multipart/form-data">
<label id='lbl'></label>
<button type='submit' id='btnSend' name='btnSend' onClick='x()'>Upload</button>
</form>
 
Ben zelf lerende, maar wat ik zo kan zien is je bovenste gedeelte niet juist je gebruikt in 3 gevallen == (gelijk aan) . Na de eerste zal de volgende niet meer tellen, je kunt hier beter een array van maken.. Looks cleaner too ;)
 
Op zich zou dat niets uit moeten maken aangezien er gebruik wordt gemaakt van een OF-statement ( || ).
Maar om zeker te zijn van je zaak kan proberen om eerst te controleren of het een jpeg is en daarna op gif.

Wat komt hier dan uit?

En voeg wat extra haken toe dat je ipv dit:
PHP:
if (($_FILES["upload"]["type"][$i] == "image/gif")  
|| ($_FILES["upload"]["type"][$i] ==  "image/jpg")  
|| ($_FILES["upload"]["type"][$i] == "image/png" )  
&& ($_FILES["upload"]["size"][$i] < 50000))
Dit krijg:
PHP:
if ( ( ($_FILES["upload"]["type"][$i] == "image/gif")  
|| ($_FILES["upload"]["type"][$i] == "image/jpg") 
 || ($_FILES["upload"]["type"][$i] == "image/png" ) ) 
&& ($_FILES["upload"]["size"][$i] < 50000))

groeten vreugde
 
De mimetype van jpg is "image/jpeg", niet "image/jpg"

"image/png" lijkt niet in de MIME reference voor te komen?

Zie hier: http://www.w3schools.com/media/media_mimeref.asp

Overigens is mimetype te faken, dus als je dit veilig wilt doen moet je na het checken op mimetype ook nog controleren of de file idd van het aangegeven mimetype is (makkelijkste manier is door em te openen in GD)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan