0

我正在尝试使用 PHP 调整图像的大小,但我不知道如何让它正确命名新图像。当我查看数据库中的图像表时,有一个带有 ID 但没有名称的条目。

如果您还有什么需要看的,请告诉我。截至目前,我假设我没有正确的 imagecopyresampled 输入。当我尝试回显 $formattedImage 的名称时,没有任何反应。如果我在使用 imagejpeg 之前将其备份一步并回显 $blankImage 的名称,那么也不会发生任何事情。

这是我的代码。

 function chgSize($image, $width, $height){
    $name = $image["name"]; //this is displaying the file name correctly
    $temp = $image["tmp_name"];
    $imgContents = imagecreatefromstring(file_get_contents($temp));
    $blankImage = imagecreatetruecolor(100,100);
       if(imagecopyresampled($blankImage, $imgContents, 0, 0, 0, 0, 100, 100, $width, $height)){ 
           $formattedImage = imagejpeg($blankImage, $name);
           $this->saveImage($formattedImage);
       }
 }


function saveImage($image){
        $newName = $image["name"];
        move_uploaded_file($image['tmp_name'], "/Applications/XAMPP/xamppfiles/htdocs/images/" . $newName);
        mysql_query("insert into images VALUES('null','$newName')");
        echo "Stored in: " . "/Applications/XAMPP/xamppfiles/htdocs/images/" . $newName;
  }
4

1 回答 1

0

仅供参考:'null'不是值。这是一个包含世界“null”的字符串。要插入实际的 sql null,必须在不带引号的情况下指定单词 null,例如裸null.

您的代码也容易受到 SQL 注入的影响,而且您的 move_uploaded_file 调用正在使用用户提供的数据作为目标文件名,因此您允许远程用户在服务器上的任何位置指定任何文件以进行涂鸦。

如果上传成功或失败,您显然也根本没有检查过,并且正在到处进行,就好像它已经完成了一样。不好。您的插入查询同上。假设查询成功是您可能做的最糟糕的事情。查询只有一种成功的方法,而失败的方法有无数种。

于 2012-05-14T02:50:22.357 回答