2012-08-09 49 views
1

我知道這是非常接近完成。 我的目標是將用戶上傳的圖像重新放大0.5倍。 我已經實現了返回上傳圖片的寬度和高度,並實現了這些值的減半。下面的代碼:如何上傳重新格式化的圖像?

//get image attributes 
    $target = "Images/"; 
    $target = $target . basename($_FILES['myFile']['name']); 

    $thumbnailsize = 0.5; 

    //Get uploaded image width and height. 
    list($width, $height) = getimagesize($target); 

    //Half the current image in size. 
    $newWidth = $width * $thumbnailsize; 
    $newheight = $height * $thumbnailsize; 

    $new_target = imagecreatefromjpeg($target); 
    $image = imagecreate($newWidth, $newheight); 

    imagecopyresized($image, $new_target, 0, 0, 0, 0, $newWidth, $newheight, $width, $height); 

    $pic = $_FILES['myFile']['name']; 
    move_uploaded_file($_FILES['myFile']['tmp_name'], $target); 

我想我現在跟我的變量使用和更新SQL語句去錯了,見下圖:

$tUser_SQLselect = "UPDATE User SET imageLocation='" . $pic . "' "; 
$tUser_SQLselect .= "WHERE ID = '" . $userID . "' "; 

任何建議將讚賞,感謝。

回答

2

你沒有在任何地方打電話imagejpeg(),所以你調整大小的文件不保存在任何地方。除非您打算將原始文件保存在調整大小的文件旁邊,否則無法在副本上使用move_uploaded_files() - 專門存在m_u_l()可對上載的文件應用某些安全檢查,因此在上載完成後不會發生篡改但在文件移動之前 - 您調整大小的圖像會觸發安全檢查。

您也可通過該$pic可變全開到SQL injection attacks - 在$ _FILES數組中的['name']參數爲用戶提供的數據,並且可以用來顛覆你的服務器。