【问题标题】:Image upload from php to mysql, fields are empty in BLOBS after upload图片从php上传到mysql,上传后BLOBS中的字段为空
【发布时间】:2012-07-24 10:40:31
【问题描述】:

我有一个小图片上传脚本,它是一种用于多图片上传的脚本。

这是“提交后”的总数。问题是,上传后,图片的所有字段都是空的。没有一张图片不能在 sql 中看到。可能是什么问题?

<?php

ini_set('display_errors',1);
error_reporting(E_ALL);
$conn = mysql_connect("127.0.0.1","root","");
if(!$conn)
{
    echo mysql_error();
}
$db = mysql_select_db("newone",$conn);
if(!$db)
{
echo mysql_error();
}

$aphoto = addslashes(file_get_contents($_FILES['picone']['tmp_name']));
$aphoto = addslashes(file_get_contents($_FILES['pictwo']['tmp_name']));
$aphoto = addslashes(file_get_contents($_FILES['picthree']['tmp_name']));
$aphoto = addslashes(file_get_contents($_FILES['picfour']['tmp_name']));
$image = getimagesize($_FILES['picone']['tmp_name']); //to know about image type etc.
$image = getimagesize($_FILES['pictwo']['tmp_name']); 
$image = getimagesize($_FILES['picthree']['tmp_name']); 
$image = getimagesize($_FILES['picfour']['tmp_name']); 




$q =  "INSERT INTO pictures(picone, pictwo, picthree, picfour) Values('$picone','$pictwo','$picthree','$picfour')";


$r = mysql_query($q,$conn);
if($r)
{
    header("Location: main.php");
    echo "Information stored successfully";
}
else
{
    echo mysql_error();
}

?>

【问题讨论】:

  • 在数据库中存储图像不是一个很好的做法。改为存储图片的路径
  • 必填项:您的查询容易受到 sql 注入,而且我很确定我可以上传一个 shell。清理和验证输入,否则您将被黑客入侵
  • 好吧,我对你给我的建议很迷茫,基本上,我可以在我的脚本中添加这些保护性附加内容,但是,我不知道在哪里以及如何添加...其次,我不知道如何将图像保存到文件夹中并通过它的名称从那里调用数据库。您对我需要搜索的标签有任何想法,或者您可以描述我添加到脚本中的任何迹象吗?

标签: php mysql upload image


【解决方案1】:

在解决这个问题之前,您应该了解一些关于 php 的知识 前往 php.net 并首先学习基础知识

您的基本语法完全不正确。 例如 $picone 来自哪里?

【讨论】:

    【解决方案2】:

    你想在这里做什么:

    $aphoto = addslashes(file_get_contents($_FILES['picone']['tmp_name']));
    $aphoto = addslashes(file_get_contents($_FILES['pictwo']['tmp_name']));
    

    您从哪里获得这些变量($picone、$pictwo、$picthree、$picfour)?

    $q =  "INSERT INTO pictures(picone, pictwo, picthree, pic four)
    Values('$picone','$pictwo','$picthree','$picfour')";
    

    将error_reporting(E_ALL)放在脚本的第一行

    【讨论】:

      【解决方案3】:
      file_get_contents($_FILES['picone']['tmp_name'])
      

      ..在我看来很狡猾。

      你应该先把它复制到某个地方。

      【讨论】:

        猜你喜欢
        • 2016-07-20
        • 2012-07-19
        • 2013-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-22
        • 1970-01-01
        • 2015-01-31
        相关资源
        最近更新 更多