通过curl将服务器的发送请求发送到另一个

时间:2015-12-07 22:44:52

标签: php curl remote-server

我有2个PHP文件,每个文件在分开的服务器中。

例如:

  1. mainServer /默认/ index.php的
  2. externalServer / request.php
  3. 第一个文件代码(index.php):

    echo $_POST['file_name'];
    

    第二个文件代码(request.php):

    $data = array(
        'file_name' => "file.zip",
        'file_size' => 5000
    );
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://mainServer/default/index.php");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($ch, CURLOPT_TIMEOUT, 2);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $response = curl_exec($ch);
    curl_close($ch);
    

    我想要的是将$data数组从externalServer/request.php发送到mainServer/default/index.php,但有一个错误Notice: Undefined index: file_name in default\index.php on line 13

    如何获取$data数组以打印项目?

1 个答案:

答案 0 :(得分:0)

我在你的代码中发现了错误。直接发送关联数组(你做了什么)不是正确的方法。您需要将数组作为字符串发送。

示例

This->
$data = array(
    'file_name' => "file.zip",
    'file_size' => 5000
);

应该是这个 - >

$data = "file_name=file.zip&file_zipe=500"

现在,当您发送数据时,您可以通过$_POST获取数据。您可以让php使用array to string conversion执行http_build_query

$data = array(
        'file_name' => "file.zip",
        'file_size' => 5000
    );
$string = http_build_query($data);
//output = file_name=file.zip&file_size=5000

详细了解http_build_query Here