【问题标题】:Curl GET Request does not return form post dataCurl GET 请求不返回表单发布数据
【发布时间】:2018-05-25 07:44:42
【问题描述】:

我在一个页面上有一个表单,比如说“x.php”,我正在使用 post 方法将此表单的数据发送到同一文件夹中的另一个页面“y.php”。现在我通过 $_POST 获取关于 'y.php' 的数据。现在的问题是,当我尝试从另一个文件中获取此 $_POST 数据时,假设使用 curl 在另一个文件夹中的“z.php”,它显示一个空数组。
注意* - 这一切都在 localhost 上运行。

这是'z.php的代码;从我试图获取数据的地方。

    $url = 'http://localhost/folder-name/y.php';
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HTTPGET, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response_json = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    $response=json_decode($response_json, true);
    echo $httpCode. "<br>" ;
    print_r($response); 

现在我检查了状态,它是“200”,所以 curl 工作正常。但我无法获取 'y.php' 上的 POST 数据。

如果问题不简短,请原谅,如果您有任何疑问,请随时问我。

【问题讨论】:

    标签: php api curl post


    【解决方案1】:

    当您向 PHP 程序处理的 URL 发出 HTTP 请求时,该程序会运行并获取有关请求的一些数据。

    如果您在该请求中发布一些数据,则该数据将在程序执行时通过$_POST 提供。

    如果您随后发出另一个 HTTP 请求,那么程序将拥有的数据将是 那个请求中的数据,而不是前一个。


    我在一个页面上有一个表单,比如说“x.php”,我正在使用 post 方法将此表单的数据发送到同一文件夹中的另一个页面“y.php”。

    首先你向y.php 发出一个POST 请求,在y.php 中你有一些数据在$_POST 中。

    curl_setopt($ch, CURLOPT_HTTPGET, true);
    

    然后您向y.php 发出 GET 请求。这是一个不同的要求。这次你不会有$_POST 中的数据。


    如果您希望数据在后续请求中可用,那么您需要将其存储在某个地方,例如数据库,并从您在后续请求中存储它的任何位置获取它。

    【讨论】:

    • 我尝试将 $_POST 数据保存到 $_SESSION 变量中,但效果不佳。无论如何感谢您的回答。
    • @nishantsharma — 您没有在使用 cURL 的请求中发送任何 cookie,因此会话将不起作用(假设 POST 请求首先是使用 cURL 发出的,而您没有尝试访问与提供给浏览器而不是您的 PHP 的 cookie 关联的会话。
    猜你喜欢
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2017-07-29
    • 2021-05-14
    • 2021-10-19
    相关资源
    最近更新 更多