簡體   English   中英

PHP curl 不發送 POST 參數

[英]PHP curl doesn't send POST params

我有file1.php ,其中包含 curl ,它調用file2.php 在本地主機上運行此代碼時,一切正常,但在服務器上運行此代碼時, file2看不到 POST 參數。 (使用 GET 參數在本地主機和服務器上一切正常。)

文件1.php:

<?php

$Url = $_SERVER['HTTP_HOST'] . '/file2.php';
$PostFields = http_build_query([
   'name' => 'John',
   'age' => 24
]);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $Url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $PostFields);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/x-www-form-urlencoded']);

curl_exec($curl);

文件2.php

<?php

echo 'Received params: ' . json_encode($_POST);

本地主機上的 Output:

收到的參數:{"name":"John","age":"24"}

服務器上的 Output:

收到的參數:[]

為什么 POST 參數適用於本地主機,但不適用於服務器?

好的,我找到了答案。 它無法在服務器上運行的原因是服務器出於某種原因正在執行重定向。 在重定向期間 POST 數據丟失,所以我必須添加curl_setopt($curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL); 到代碼。

現在它工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM