Afbeelding resizen tijdens uploaden [PHP]
jeroeng21 op 15 september 2011 #
Hallo allemaal,
Ik heb op het moment deze code om afbeeldingen up te loaden. Het uploaden werkt, totdat ik een functie gebruik om de afbeelding te verkleinen voor het opslaan. Hij load nu niks op en geeft een msq-error.
Ziet iemand wat ik fout doe?
Bij voorbaat dank,
Jeroen
<?php
function afbeeldingen ($file_name) {
return(ereg('[]0-9a-zA-Z_[-]+(.jpg)|(.gif)|(.bmp)|(.png)', $file_name)); </p><p>}</p><p>function image_resize($src, $dst, $width, $height, $crop=0){</p><p> if(!list($w, $h) = getimagesize($src)) return "Unsupported picture type!";</p><p> $type = strtolower(substr(strrchr($src,"."),1));
if($type == 'jpeg') $type = 'jpg';
switch($type){
case 'bmp': $img = imagecreatefromwbmp($src); break;
case 'gif': $img = imagecreatefromgif($src); break;
case 'jpg': $img = imagecreatefromjpeg($src); break;
case 'png': $img = imagecreatefrompng($src); break;
default : return "Unsupported picture type!";
}</p><p> // resize
if($crop){
if($w < $width or $h < $height) return "Picture is too small!";
$ratio = max($width/$w, $height/$h);
$h = $height / $ratio;
$x = ($w - $width / $ratio) / 2;
$w = $width / $ratio;
}
else{
if($w < $width and $h < $height) return "Picture is too small!";
$ratio = min($width/$w, $height/$h);
$width = $w * $ratio;
$height = $h * $ratio;
$x = 0;
}</p><p> $new = imagecreatetruecolor($width, $height);</p><p> // preserve transparency
if($type == "gif" or $type == "png"){
imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127));
imagealphablending($new, false);
imagesavealpha($new, true);
}</p><p> imagecopyresampled($new, $img, 0, 0, $x, 0, $width, $height, $w, $h);</p><p> switch($type){
case 'bmp': imagewbmp($new, $dst); break;
case 'gif': imagegif($new, $dst); break;
case 'jpg': imagejpeg($new, $dst); break;
case 'png': imagepng($new, $dst); break;
}
return true;
}</p><p>$go = $_POST['go'];</p><p>if ($go ==""): </p><p>?>
<p class='kop'>Avatar uploaden</p>
<a href='instellingen.php'>Ga terug</a>
<hr id='updatelijn'>
<form name="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data"></p><p><!-- Hier komt het verborden veld 'go met de waarde 'go' -->
<input name="go" type="hidden" value="go">
<table width="450" border="0" align="left">
</tr>
<tr>
<td>Afbeelding</td>
<td><input name="afbeelding" type="file" accept="image/jpeg" id="afbeelding" size="50">
<input type='hidden' name='id' value='<?php echo "".$dbarray2['id'].""; ?>'></p><p> </tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Verzenden">
</td>
</tr>
</table></p><p></form>
<p class='klein'>Het uploaden kan enkele momenten duren, een ogenblik geduld aub</p></p><p><?php
endif;</p><p>if ($go =="go"):
// bepaal de huidige directory
$hello = getcwd();
$id = $_POST['id'];</p><p>$file_dir = ($hello . "/images");</p><p>if (is_dir ($file_dir)) {
print "";
} else {
print "</p><p>--Directory bestaat nog niet" . $file_dir;
$newpage = $file_dir;
echo ("
we gaan daarom de directory aanmaken");
mkdir ($newpage, 0777);
} </p><p>foreach($_FILES as $file_name => $file_array) {</p><p> $file_name=str_replace("'", "_", $file_array['name']);
$file_name=str_replace(" ", "_", $file_array['name']);
$file_name=stripslashes($file_name);
$file_name=trim($file_name);
$file_name=strtolower($file_name); </p><p> $test = afbeeldingen($file_name);
if ($test !=""):
$file_name = $id._.$file_name;
$plaatje = image_resize($file_array['tmp_name'], "/bestanden/avatars/", 75, 75, 1);
if (is_uploaded_file($plaatje)) {
move_uploaded_file($plaatje, "$file_dir/$file_name") or die ("Couldn't copy");</p><p> $afbeelding = "images/" . $file_name;
$sql = "UPDATE users set avatar = '".$afbeelding."' where id = '".$id."'"; </p><p> }
endif;</p><p> if (!$temp = mysql_query($sql,$conn)) {
echo "<p>Er is een fout opgetreden</p>";
} else {
echo "<meta http-equiv=\"Refresh\" content=\"0;url=profiel.php?id=".$id."\">";
}
}
endif;
?></p><p>
sturb op 16 september 2011 #
Wat is de mysql error???
Bestaan de imagecreatefromxxxx wel? Niet alle servers hebben ze standaard geïnstalleerd.
Daarnaast is dit wel heel erg tricky:
$sql = "UPDATE users set avatar = '".$afbeelding."' where id = '".$id."'"
http://nl.wikipedia.org/wiki/SQL-injectie
http://php.net/mysql_real_escape_string
Advertentie
Je kunt alleen reageren met een gratis OMT account.
Log in of registreer.
Inloggen
Over dit topic
Gestart op 15 september 2011 door jeroeng21
Laatste reactie door sturb
Reageer op dit topic