2015-12-07 3 views
0

У меня есть 2 файла PHP, каждый из которых находится в отдельном сервере.Отправить запрос на отправку с сервера на другой с помощью curl

Например:

  1. mainServer/по умолчанию/index.php
  2. externalServer/request.php

Первый файл кода (index.php):

echo $_POST['file_name']; 

Код второго файла (запрос. 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

Что делает 'var_dump ($ _ POST)' выходы? – Akshay

+0

@Akshay: Выход: 'array (size = 0) empty' –

+0

Добавлено ответ ниже. – Akshay

ответ

0

Я нашел ошибку в вашем коде. Отправка ассоциативного массива напрямую (что вы сделали) не является правильным способом. Вам нужно отправить массив как строку.

Пример

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

Должно быть this->

$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_queryHere