проблема с отправкой переменных на удаленный URL с помощью CURL - PullRequest
0 голосов
/ 30 июля 2011

Я пытаюсь отправить переменные с сервера A на сервер B и обратно. У меня все работает, кроме фактической отправки переменных с сервера A на сервер B. Поэтому я могу отправить переменные обратно с сервера B на сервер A, но просто не могу отправить их на сервер B с сервера A. Я использую JSON для отправки переменных обратно ( который отлично работает) и я использую _POST для отправки их на сервер B.

Вот мой код на обоих серверах:

Сервер A

<?

require ('../refference.php');

$post_fields = array(
    'unq__id' => $sponsor_reference,
    'gdi__username' => $sponsor_GDI_id,
);
$ch = curl_init('http://site.com/WP/d__access.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,  $post_fields);
curl_setopt($ch, CURLOPT_POST, 1);

$result = curl_exec($ch);

$data = json_decode($result);

$sponsor_first_nme = $data->sponsor_first_nme;


echo $sponsor_first_nme;


?>

Сервер B

<?

include ('config/wp__2135432135435135412312415456654452547534.php');

mysql_connect($hostname,$username,$password) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());

$reference = $_POST['unq__id'];
$username = $_POST['gdi__username'];
$select = mysql_query("SELECT * FROM $usertable WHERE ". "GDI_Username = '$username' AND Unique_id = '$reference'");

while($check = mysql_fetch_array($select)) {
    $sponsor_email = $check["Email"];
    $sponsor = $check["GDI_Username"];
    $sponsor_first_nme = $check["First_Name"];
    $sponsor_second_nme = $check["Last_Name"];
    $sponsor_domain = $check["GDI_Domain"];
    $unq_id = $check["Unique_id"];
 } 

$sponsor_name = "$sponsor_first_nme $sponsor_second_nme";

$result = array(
    'sponsor_first_nme' => $sponsor_first_nme, 
    'sponsor_second_nme' => $sponsor_second_nme, 
    'sponsor_email' => $sponsor_email,
    'sponsor' => $sponsor,
    'sponsor_domain' => $sponsor_domain,
    'unq_i' => $unq_id,
    'sponsor_full_name' => $sponsor_name,
);

echo json_encode($result);



?>

Я знаю, что все остальное работает нормально, так как я заменил:

$select = mysql_query("SELECT * FROM $usertable WHERE ". "GDI_Username = '$username' AND Unique_id = '$reference'");

С

$select = mysql_query("SELECT * FROM $usertable WHERE ". "GDI_Username = 'myusername' AND Unique_id = '45415645154'");

Итак, я знаю, что проблема заключается в отправке переменных (

'unq__id' => $sponsor_reference,
        'gdi__username' => $sponsor_GDI_id,

с сервера A, поскольку я не могу использовать их в сценарии на сервере B)

Когда я тестирую его с помощью переменных, я просто получаю пустую страницу, но когда я заменяю эту строку, как упомянуто выше, я получаю имя ($ sponsor_first_nme), выводимое на экран (ожидаемый результат)

Ответы [ 4 ]

0 голосов
/ 01 августа 2011

У меня это работает, ну, похоже, оно работает все время ...

Я просто неправильно повторял это. Я использовал echo $sponsor_first_nme, когда он должен был быть echo "$sponsor_first_nme" (с кавычками).

Действительно ценю всю вашу помощь, хотя! СПАСИБО!

0 голосов
/ 30 июля 2011

Вы можете использовать serialize () , чтобы создать строковое представление того, что вы пытаетесь отправить.

0 голосов
/ 30 июля 2011

Возможно, вам придется установить опцию публикации, прежде чем вы установите данные публикации.

 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS,  $post_fields);

Если нет, данные публикации могут быть пустыми.

0 голосов
/ 30 июля 2011

Отправить данные сообщения в виде строки

$fields = array(
    'unq__id' => $sponsor_reference,
    'gdi__username' => $sponsor_GDI_id,
);

$field_string = "";
foreach($fields as $key=>$value) {
   $fields_string .= $key.'='.$value.'&'; 
}
rtrim($fields_string,'&');

Теперь вы можете отправить их в curl:

Редактировать:

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...