Dit is een topic in Community » Forum » Pro » Web ontwikkeling

Afbeelding resizen tijdens uploaden [PHP]

jeroeng21

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

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