使用PHP调整大小时继承图像属性

时间:2012-05-14 02:46:40

标签: php mysql

我正在尝试使用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;
  }

1 个答案:

答案 0 :(得分:0)

仅供参考:'null' 为空值。它是一个包含世界'null'的字符串。要插入实际的sql null,必须在没有引号的情况下指定单词null,例如裸null

您的代码也容易受到SQL注入攻击,而且您的move_uploaded_file调用正在使用用户提供的目标文件名数据,因此您允许远程用户在您的服务器上任意指定任何文件以进行潦草地写入。

如果上传成功或失败并且正在无处不在,您显然根本没有检查过。不好。同样适用于您的插入查询。假设查询成功是您可能做的最糟糕的事情。只有一种方法可以使查询成功,并且有几种方法可以使它失败。