【发布时间】:2018-03-09 08:42:25
【问题描述】:
我一直在为一个 uni 项目创建一个网站,我的代码被指出易受 SQL 注入攻击,因为我没有使用准备好的语句。我正在纠正这个问题,我遇到了一堵墙,上传了图片。当我只是使用标准 MYSQLi 查询时,我了解它分配给变量的方式,现在因为我使用占位符和绑定参数,我有点迷茫。最初我无法将图像放入目录,尽管我现在已经通过阅读论坛解决了这个问题。现在我的图像路径没有存储在数据库中,我尝试了很多方法来让它工作并在论坛上广泛阅读。我只是无法使用准备语句在 MYSQLi 中获取图像上传的示例。希望有人能指出我正确的方向,让我更好地理解。
if(isset($_POST['add_product'])) {
$destination = "C:/Ampps/www/Adaptive_Dev/images/".$_FILES['image']['name'];
move_uploaded_file($_FILES['image']['tmp_name'], $destination);
print_r($_FILES);
$stmt = $connection->prepare("INSERT INTO products
(productBrand,
productModel,
productModelNo,
productPrice,
productDesc,
productSpec,
productInTheBox,
productGuarantee,
productImage)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssdsssis",
$_POST['productBrand'],
$_POST['productModel'],
$_POST['productModelNo'],
$_POST['productPrice'],
$_POST['productDesc'],
$_POST['productSpec'],
$_POST['productInTheBox'],
$_POST['productGuarantee'],
$_FILES['ProductImage'] );
$stmt->execute();
我暂时将列设置为接受空值,因此数据会传递到数据库。我试图在图像的占位符位置放置一个变量,这会引发各种错误。我只是不知道如何将它传递给绑定参数。
Array ( [image] => Array ( [name] => b&oM5Banner.jpg [type] => image/jpeg [tmp_name] => C:\Ampps\tmp\phpB39.tmp [error] => 0 [size] => 269481 ) )
我把我的 print_r 结果放在这里,我真的不知道我还能提供什么其他信息,我显然做错了什么,我不知道是什么。提前谢谢。
【问题讨论】:
-
为什么
Ive temporarily set the column to accept nulls, -
$_FILES['ProductImage']不存在 -
尝试改用
$destination
标签: php mysqli prepared-statement