【问题标题】:How to pass POST parameters in a url如何在 url 中传递 POST 参数
【发布时间】: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 攻击。您应该使用mysqliPDO 带有绑定参数的预准备语句,如this post 中所述。
  • 当您的访问者发布图片时,它只包含该图片。什么是 HTML 内容?我看不出任何原因,您应该使用 GET 而不是 POST 将文件上传到服务器。
  • 感谢@AlexHowansky,我正在尝试在没有上传按钮等 html 内容的 URL 中发送它

标签: php html post http-post httprequest


【解决方案1】:

$_POST[''];参数通常来自将方法设置为 POST 的表单,就像您的一样,您拥有的输入类型(文件,命名图像)将返回 $_POST['image'],另一方面,$_REQUEST 是“GET”方法,它的工作方式相同,唯一的区别是它不安全,它来自 url。老实说,我建议使用 POST。还要使用 PDO,因为您的代码容易受到 SQL 注入的攻击。 (Alex Howansky 提到)

【讨论】:

  • 如何使用 POST 发送 URL 中的参数?
  • 您不需要,就是这样,POST 将其发送到 $_POST['name'] 超级全局,然后您可以从网站的任何位置访问它。 GET 将其发送到 url 并通过 $_REQUEST['name'] 访问
  • 不可能像你想要的那样通过 url 发送图像文件,你真的需要某种类型的文件上传,你不能简单地从 url 注入图像,除非它的图像来自另一个 url,你会有类似 page.com/upload.php?file=www.imgur.com/image.png
  • 哦,除非您已经掌握了图像 URL,否则我想要做的有点不可能?所以没有办法用 $_GET 将上传的图片发送到数据库等等?就像 snap 和 facebook 如何将所有图像存储在服务器中一样,这就是我想要做的。
  • 不,伙计,您需要采取某种方式来接收文件,然后将其发送到数据库。一般用form和post方法。
猜你喜欢
  • 1970-01-01
  • 2018-07-05
  • 2015-12-18
  • 2011-10-26
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 2015-04-03
  • 2016-12-21
相关资源
最近更新 更多