Являются ли одновременные запросы cURL HTTP ответом? - PullRequest
1 голос
/ 21 января 2011

сначала позвольте мне начать с обязательного "Я немного нуб, глупый вопрос и т. Д.". У меня есть кое-что, чего я хотел бы достичь, и мне нужна небольшая помощь в поиске правильного решения. У меня есть несколько веб-форм, которые передаются между доменами через процессор cURL (реальный процессор форм должен находиться в отдельном домене из-за проблем CRM), поэтому я могу использовать функцию AJAX jQuery для отображения соответствующего сообщения на основе ответа.

Это достаточно просто. Теперь мы перешли на наш ESP и хотели бы отправить только адрес электронной почты и имя для хранения в нашей маркетинговой базе данных. Таким образом, в одной форме содержится много информации, но нам нужно только отправить эти два элемента в нашу ESP.

Должно ли это быть сделано с помощью сценария cURL, который отправляет информацию в наш междоменный процессор форм или в сам процессор? Если мне что-то неясно, дайте мне знать, и я буду расширяться. Я знаю, что не идеально «откачивать» в строю два пункта назначения, но это решение было принято над моей головой. Ниже приведен пример одного из моих текущих сценариев cURL.

<?php

$url = 'myremoteserver.com';
$referred_by_text = $_POST["referred_by_text"];
$broker_text = $_POST["broker_text"];
$email1 = $_POST["email1"];
$radiobutton = $_POST["radiobutton"];
$trade_futures = $_POST["trade_futures"];
$trade_fx = $_POST["trade_fx"];
$trade_equities = $_POST["trade_equities"];

$fields = array(
'referred_by_text'=>urlencode($referred_by_text),
'broker_text'=>urlencode($broker_text),
'email1'=>urlencode($email1),
'radiobutton'=>urlencode($radiobutton),
'trade_futures'=>urlencode($trade_futures),
'trade_fx'=>urlencode($trade_fx),
'trade_equities'=>urlencode($trade_equities)
);

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

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);
echo $output;
curl_close($ch);

?>

1 Ответ

0 голосов
/ 21 января 2011

То есть маркетинговая база данных находится в 3-м отдельном домене, отдельно от исходного веб-хоста и 2-го домена CRM?И все 3 домена размещены на отдельных серверах?

Вы можете сделать это в 1 запросе cURL, если в сценарии сервера CRM, после обработки переменных POST вы делаете перенаправление заголовка, которое присоединяет переменные POST как GET переменные кURL сервера ESP.Но это, вероятно, не очень хорошая идея.И с / cURL вы не можете делать 2 «одновременных» запроса, вы можете делать только один за другим.

Если бы это был я, я бы написал на сервере ESP хронограф, чтобы получить все новые / измененные записи.из базы данных CRM на тот день, но, возможно, это не сработает в вашей ситуации.

также предложение, если ваши имена полей формы всегда будут соответствовать представленным именам переменных, вы можете заменить:

$referred_by_text = $_POST["referred_by_text"];
$broker_text = $_POST["broker_text"];
$email1 = $_POST["email1"];
$radiobutton = $_POST["radiobutton"];
$trade_futures = $_POST["trade_futures"];
$trade_fx = $_POST["trade_fx"];
$trade_equities = $_POST["trade_equities"];

$fields = array(
'referred_by_text'=>urlencode($referred_by_text),
'broker_text'=>urlencode($broker_text),
'email1'=>urlencode($email1),
'radiobutton'=>urlencode($radiobutton),
'trade_futures'=>urlencode($trade_futures),
'trade_fx'=>urlencode($trade_fx),
'trade_equities'=>urlencode($trade_equities)
);

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

на что-то вроде этого:

$allowed_vars = array("referred_by_text","broker_text","email1","radiobutton","trade_futures","trade_fx","trade_equities");
$outputarray = array();

foreach($_POST as $key => $value){
    if(in_array($key,$allowed_vars)){
        $outputarray[] = $key.'='.urlencode($value);
    }
}
$fields_string = implode('&',$outputarray);

thisзначительно упростит добавление или изменение имен полей, поскольку вы изменяете только экземпляр в разрешенном массиве, а не в нескольких местах.in_array защищает вас от лишних нежелательных значений POST, а имплод объединяет ваши пары имя / значение без необходимости удалять последние &

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...