【发布时间】:2017-05-26 16:45:52
【问题描述】:
是否可以通过在没有 HTML 内容的 URL 中发送 POST 或 REQUEST 参数来上传图像/文件?
我创建了一个 PHP 文件,它从我的某人那里获取图像,将该文件存储到数据库中,然后存储在我计算机上的文件夹中。它工作正常,但我现在要做的是删除 html 内容,只允许某人通过 URL 发送图像/文件。我尝试使用$_GET,但收到很多错误。我也对此进行了研究,发现只有$_POST 可以工作。
这是我的带有 HTML 的 PHP 源代码,但请记住,“我希望页面空白,并且某人发送图像/文件的唯一方法是通过 URL”。
PHP:
if(isset($_POST['submit'])){
if(@getimagesize($_FILES['image']['tmp_name']) ==FALSE){
// Select an image
echo "Please select an image.";
}
else{
// THE PATH TO STORE THE UPLOAD IMAGE
$target = "images/".basename($_FILES['image']['name']);
//CONNECT TO DATABASE
$db = mysqli_connect("localhost", "root", "");
mysqli_select_db($db, "magicsever");
if(mysqli_connect_error()){
die ("Database connection error");
}
//GET ALL THE SUBMITTED DATA
$image = $_FILES['image']['tmp_name'];
$name = $_FILES['image']['name'];
//Store te submitted data to database
$sql = "INSERT INTO image_test (name, image)VALUES ('$name','$image')";
$query = mysqli_query($db, $sql);
//Now lets move the uploaded image into the folder
$nullResult = array();
$nullResult['Image'] = (move_uploaded_file($_FILES['image']['tmp_name'], $target))? "Successful": "Unsuccessful";
echo json_encode($nullResult);
}
}
HTML:
<form action="index.php" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<br></br>
<input type="submit" name="submit" value="Upload">
</form>
【问题讨论】:
-
您的代码容易受到SQL injection 攻击。您应该使用mysqli 或PDO 带有绑定参数的预准备语句,如this post 中所述。
-
当您的访问者发布图片时,它只包含该图片。什么是 HTML 内容?我看不出任何原因,您应该使用 GET 而不是 POST 将文件上传到服务器。
-
感谢@AlexHowansky,我正在尝试在没有上传按钮等 html 内容的 URL 中发送它
标签: php html post http-post httprequest