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);

我想我现在的变量使用和 UPDATE SQL 语句出错了,见下文:

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

任何建议将不胜感激,谢谢。

4

1 回答 1

2

你没有imagejpeg()在任何地方打电话,所以你调整大小的文件不会保存在任何地方。除非您打算将原始文件与调整大小的文件一起保存,否则您不能在副本上使用 move_uploaded_files() - m_u_l() 专门用于对上传的文件应用某些安全检查,因此上传完成后不会发生篡改但在文件移动之前 - 您调整大小的图像会触发安全检查。

您还可以通过该变量对SQL 注入攻击持开放态度 - $_FILES 数组中的参数是用户提供的数据,可用于破坏您的服务器。$pic['name']

于 2012-08-09T20:55:34.767 回答