通过PHP上传图片和缩略图

时间:2011-08-19 16:28:17

标签: php image upload thumbnails

所以我需要一个非常简单的脚本来调整图像大小并在PHP中上传缩略图。请不要推荐图书馆,因为我宁愿能够轻松地编辑和学习图书馆。

我自己编写了一个小的PHP脚本来上传一个图像,并在数据库中将其命名为ID,并打算将拇指简单地添加到名称末尾的“拇指”(例如123thumb)。 jpg),但我有点想破坏它试图用缩略图工作。

这有点像:

mysql_query('
    INSERT INTO art (
        artist,
        title,
        extension)
    VALUES (
        1,
        "Penguins",
        "'.end(explode('.',$_FILES['art']['name'])).'")') ;
move_uploaded_file($_FILES['art']['tmp_name'],'images/'.mysql_insert_id()..end(explode('.',$_FILES['art']['name']))

2 个答案:

答案 0 :(得分:0)

糟糕的糟糕设计。 1.没有错误检查查询并在查询中使用原始用户提供的数据,导致sql注入漏洞。 2.使用原始用户提供的文件名来存储文件,即使它具有前置数据库ID。 3.盲目地假设插入查询有效,这样msyql_insert_id可能不会返回任何内容。 3.盲目地假设移动命令有效。

更好/更安全的方法是:

if ($_FILES['art']['error'] !== UPLOAD_ERR_OK) {
   die("Upload failed with error code " . $_FILES['art']['error']);
}

$filename = mysql_real_escape_string(basename($_FILES['art']['name']));
mysql_query("INSERT .... VALUES (1, 'Penguins', '$filename', ...)") or die(mysql_error());

move_uploaded_files(...) or die("Failed to move file");

可以做更多/更好的验证/错误处理,但这是比你的版本更安全/更可靠的东西的骨架。

答案 1 :(得分:0)

除了脚本的所有潜在漏洞(请参阅其他答案)之外,此页面可能对教您如何调整图像大小以获取缩略图非常有帮助。您将不得不使用像GD(内置于PHP)这样的库来调整图像大小。

http://salman-w.blogspot.com/2008/10/resize-images-using-phpgd-library.html

(在另一个SO问题中找到它。)

编辑:当然,不要忘记PHP手册。 http://php.net/manual/en/book.image.php