2 berichten aan het bekijken - 1 tot 2 (van in totaal 2)
  • Q:
    Bijdrager
    jeroeng21

    Afbeelding resizen tijdens uploaden [PHP]

    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

    <br />
    <?php<br />
    function afbeeldingen ($file_name)  {<br />
       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));<br />
      if($type == 'jpeg') $type = 'jpg';<br />
      switch($type){<br />
        case 'bmp': $img = imagecreatefromwbmp($src); break;<br />
        case 'gif': $img = imagecreatefromgif($src); break;<br />
        case 'jpg': $img = imagecreatefromjpeg($src); break;<br />
        case 'png': $img = imagecreatefrompng($src); break;<br />
        default : return "Unsupported picture type!";<br />
      }</p>
    <p>  // resize<br />
      if($crop){<br />
        if($w < $width or $h < $height) return "Picture is too small!";<br />
        $ratio = max($width/$w, $height/$h);<br />
        $h = $height / $ratio;<br />
        $x = ($w - $width / $ratio) / 2;<br />
        $w = $width / $ratio;<br />
      }<br />
      else{<br />
        if($w < $width and $h < $height) return "Picture is too small!";<br />
        $ratio = min($width/$w, $height/$h);<br />
        $width = $w * $ratio;<br />
        $height = $h * $ratio;<br />
        $x = 0;<br />
      }</p>
    <p>  $new = imagecreatetruecolor($width, $height);</p>
    <p>  // preserve transparency<br />
      if($type == "gif" or $type == "png"){<br />
        imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127));<br />
        imagealphablending($new, false);<br />
        imagesavealpha($new, true);<br />
      }</p>
    <p>  imagecopyresampled($new, $img, 0, 0, $x, 0, $width, $height, $w, $h);</p>
    <p>  switch($type){<br />
        case 'bmp': imagewbmp($new, $dst); break;<br />
        case 'gif': imagegif($new, $dst); break;<br />
        case 'jpg': imagejpeg($new, $dst); break;<br />
        case 'png': imagepng($new, $dst); break;<br />
      }<br />
      return true;<br />
    }</p>
    <p>$go = $_POST['go'];</p>
    <p>if ($go ==""): </p>
    <p>?><br />
    <p class='kop'>Avatar uploaden</p><br />
    <a href='instellingen.php'>Ga terug</a><br />
    <hr id='updatelijn'><br />
    <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' --><br />
       <input name="go" type="hidden" value="go"><br />
           <table width="450" border="0" align="left"><br />
        </tr><br />
        <tr><br />
          <td>Afbeelding</td><br />
          <td><input name="afbeelding" type="file" accept="image/jpeg" id="afbeelding" size="50"><br />
              <input type='hidden' name='id' value='<?php echo "".$dbarray2['id'].""; ?>'></p>
    <p>    </tr><br />
        <tr><br />
          <td>&nbsp;</td><br />
          <td><input type="submit" name="Submit" value="Verzenden"><br />
    	  </td><br />
        </tr><br />
      </table></p>
    <p></form><br />
    <p class='klein'>Het uploaden kan enkele momenten duren, een ogenblik geduld aub</p></p>
    <p><?php<br />
    endif;</p>
    <p>if ($go =="go"):<br />
    // bepaal de huidige directory<br />
    $hello = getcwd();<br />
    $id = $_POST['id'];</p>
    <p>$file_dir = ($hello . "/images");</p>
    <p>if (is_dir ($file_dir)) {<br />
      print "";<br />
      }  else {<br />
      print "</p>
    <p>--Directory bestaat nog niet" . $file_dir;<br />
        $newpage = $file_dir;<br />
        echo ("<br />we gaan daarom de directory aanmaken");<br />
        mkdir ($newpage, 0777);<br />
      }  </p>
    <p>foreach($_FILES as $file_name => $file_array) {</p>
    <p>       $file_name=str_replace("'", "_", $file_array['name']);<br />
           $file_name=str_replace(" ", "_", $file_array['name']);<br />
           $file_name=stripslashes($file_name);<br />
           $file_name=trim($file_name);<br />
           $file_name=strtolower($file_name);    </p>
    <p>       $test = afbeeldingen($file_name);<br />
           if ($test !=""):<br />
                $file_name = $id._.$file_name;<br />
                $plaatje = image_resize($file_array['tmp_name'], "/bestanden/avatars/", 75, 75, 1);<br />
    			if (is_uploaded_file($plaatje)) {<br />
                     move_uploaded_file($plaatje, "$file_dir/$file_name") or die ("Couldn't copy");</p>
    <p>                 $afbeelding = "images/" . $file_name;<br />
                     $sql = "UPDATE users set avatar = '".$afbeelding."' where id = '".$id."'";    </p>
    <p>				}<br />
    				endif;</p>
    <p>				if (!$temp = mysql_query($sql,$conn)) {<br />
    				echo "<p>Er is een fout opgetreden</p>";<br />
    				} else {<br />
    				echo "<meta http-equiv=\"Refresh\" content=\"0;url=profiel.php?id=".$id."\">";<br />
    				}<br />
      }<br />
    endif;<br />
    ?></p>
    <p>
    Bijdrager
    sturb

    Wat is de mysql error???
    Bestaan de imagecreatefromxxxx wel? Niet alle servers hebben ze standaard geïnstalleerd.

    Daarnaast is dit wel heel erg tricky:

    <br />
     $sql = "UPDATE users set avatar = '".$afbeelding."' where id = '".$id."'"<br />
     

    http://nl.wikipedia.org/wiki/SQL-injectie
    http://php.net/mysql_real_escape_string

2 berichten aan het bekijken - 1 tot 2 (van in totaal 2)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.