Hi,
I'm building a website for a friends band and since this is the first time I'm building a CMS with php I'm running into some problems. I'm busy with an image upload script for the band to use in their admin panel but the script won't let me upload any images 🙁 This is a standard script which I could use from someone else but neither he or myself can seem to find the bug...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Uploaden</title>
<script language="javascript">
function createmap(id)
{
if(document.getElementById("weergeefcreate"+id).style.display=='none')
{
document.getElementById("weergeefcreate"+id).style.display = '';
document.getElementById("verbergcreate"+id).style.display = 'none';
document.getElementById("createetext"+id).style.display = 'none';
}
else
{
document.getElementById("weergeefcreate"+id).style.display = 'none';
document.getElementById("verbergcreate"+id).style.display = '';
document.getElementById("createetext"+id).style.display = '';
}
}
</script>
</head>
<body>
<?php
if(isset($melding)) //als $melding bestaat
{
exit($melding); //stop het script met de melding
}
$i = 0; //set $i op 0
if($_SERVER['REQUEST_METHOD'] == "POST") //als er gesubmit is
{
if(isset($_POST['creatdir'])) //als er een nieuwe map aangemaakt moet worden
{
if(!empty($_POST['mapname'])) //en de map naaam is niet leeg
{
if(!is_dir($dir.$_POST['mapname'])) //en als de map nog niet bestaat
{
mkdir($dir.$_POST['mapname'], 0755); //maak de map dan aan
echo 'de map '.$_POST['mapname'].' is aangemaakt<br><br>'; //en echo dat de map is aangemaakt
}
else //als de map al bestaat
{
echo 'map bestaat al<br><br>'; //echo dat de map al bestaat
}
}
else //als de mapnaam leeg is
{
echo '<b>de opgegeven bestandsnaam is leeg</b><br><br>'; //echo dat de mapnaam leeg is
}
unset($_POST); //unset de post variabele
}
else //als er geen nieuwe map aangemaakt moet worden
{
if(!is_dir($dir)) //als de opgegeven map niet bestaat
{
mkdir ($dir, 0700); //maak de map aan
}
$j = 1; //set $j op 1
while($j <= $num) //als $j kleiner of gelijk aan het nummer van de uploads is
{
if(!empty($_FILES['bestand'.$j]['name'])) //als het bestand niet leeg is
{
$pathinfo = pathinfo($_FILES['bestand'.$j]['name']); //maak een pathinfo
$ext = $pathinfo["extensie"]; //en geef $ext de extensie mee
if($ext != 'jpg' || 'png' || 'bmp' || 'psd' || 'jpeg') //als de extensie niet jpg, png, bmp of psd is
{
$error = 'Bestand wordt niet ondersteund; alleen jpg, png, bmp en psd worden ondersteund'; //echo dat
}
elseif(file_exists($dir.$_POST['map'].'/'.$_FILES['bestand'.$j]['name'])) //als het bestand al bestaat
{
$error = 'Bestand '.$j.' bestaat al'; //echo dat
}
elseif($_FILES['bestand'.$j]['size'] > $maxsize) //als het bestand groter is dan de opgegeven grootte
{
$error = 'Bestand is te groot'; //dan geven dat mee aan de echo ;-)
}
else //als al het bovenstaande niet zo is :-p
{
$error = NULL; //set $error dan op 0
}
if(!empty($error)) //als error niet leeg is
{
echo '<b>Er is een fout op getreden bij bestand '.$j.':</b><br>'.$error.'<br /><br />'; //echo de error
}
else //als de error wel leeg is
{
if(move_uploaded_file($_FILES['bestand'.$j]['tmp_name'], $dir.$_POST['map'].'/'.$_FILES['bestand'.$j]['name'])) //verplaats het bestand
{
echo 'Bestand '.$j.' is succesvol geupload:<br>
<br>
<img src="'.$dir.$_POST['map'].'/'.$_FILES['bestand'.$j]['name'].'" alt="'.$_FILES['bestand'.$j]['name'].'" width="200px"><br>
<br>'; //en echo dat alles is gelukt
}
else //als het bestand niet verplaatst kon worden
{
echo 'Error tijden uploaden van bestand '.$j; //echo dat
}
}
}
else //als het bestand wel leeg is
{
echo '<b>Bestand '.$j.' was leeg</b><br /><br />'; //echo dat het bestand leeg is
}
$j++; //verhoog $j met 1
} //einde while
}
}
?>
<form action="#" method="post" enctype="multipart/form-data" name="form" id="form">
Selecteer een doelmap:
<select name="map" style="z-index: 1;">
<?php
$handle = opendir($dir);
while (($file = readdir($handle)) != FALSE)
{
if (($file != ".") && ($file != "..") && (filetype($dir.$file) == "dir"))
{
echo '<option value="'.$file.'">'.$file.'</option>';
}
}
?>
</select>
<br />
<div id="weergeefcreate1" onclick="createmap(1)" style="cursor:pointer; float: left;">
<i>Or click here to make a new directory</i>
</div>
<div id="createetext1" style="display:none; position:absolute; width: 350px; background-color:#999999; z-index: 3;">
<h4 align="center">Make a new directory</h4>
<form method="post" action="#">
New directory name: <input type="text" name="mapname" /><br />
<br />
<input type="submit" name="creatdir" value="Maak map aan" />
<div id="verbergcreate1" style="display:none;">
<input name="createe_text" type="button" value="cancel" onclick="createmap(1)" />
</div>
</form>
</div>
<br />
<br />
<?php
$i = 1;
while($i <= $num)
{
echo 'Foto '.$i.' <input name="bestand'.$i.'" type="file" id="bestand"><br />';
$i++;
}
?>
<br />
<input name="uploaden" type="submit" id="uploaden" value="Uploaden">
</form>
The problem is in this part:
if(!empty($_FILES['bestand'.$j]['name'])) //als het bestand niet leeg is
{
$pathinfo = pathinfo($_FILES['bestand'.$j]['name']); //make a pathinfo
$ext = $pathinfo["extensie"]; // give $ext the extension
if($ext != 'jpg' || 'png' || 'bmp' || 'psd' || 'jpeg') //als de extensie niet jpg, png, bmp of psd is
{
$error = 'Bestand wordt niet ondersteund; alleen jpg, png, bmp en psd worden ondersteund'; //echo this
I'm getting the error that the file extension is not supported with any file, even with files that have the right extension. Does anybody know a fix to this problem?
Thanks!