PHP curl преобразование в Coldfusion Chfttp - PullRequest
2 голосов
/ 22 апреля 2019

Я смотрю на этот пример отслеживания событий activecampaign

curl_setopt($curl, CURLOPT_URL, "https://trackcmp.net/event");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, array(
"actid" => "649587205",
"key" => "4a2f544b998d0107cd0341e799513c7eb94abde4",
"event" => "YOUR_EVENT",
"eventdata" => "ANY_DATA",
"visit" => json_encode(array(
        // If you have an email address, assign it here.
        "email" => "",
    )),
));

Я получаю, что могу использовать следующие вызовы CFHTTP

<cfhttp url="https://trackcmp.net/event" method="POST">
<cfhttpparam type="FORMFIELD" name="actid" value="649587205">
<cfhttpparam type="FORMFIELD" name="key" value="4a2f544b998d0107cd0341e799513c7eb94abde4">
<cfhttpparam type="FORMFIELD" name="event" value="Watched">
<cfhttpparam type="FORMFIELD" name="eventdata" value="Video 101 - how to...">
<cfhttpparam type="FORMFIELD" name="visit" value="">

Но как это сделать?Я отвечаю на вызов "посещение"

"visit" => json_encode(array(
    // If you have an email address, assign it here.
    "email" => "",
)),

У меня только что перепутан адрес электронной почты, как преобразовать это в логику тега CF.Благодарю.Matt

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

Лучше всего начать с руководства по PHP , чтобы выяснить, что делают эти две функции.

array ()

Документация для функции array () и тип массива объясняет, что вв этом контексте он создает ассоциативный массив или, другими словами, структуру CF.

Массив в PHP на самом деле является упорядоченной картой.Карта - это тип, который связывает значения с ключами .

json_encode ()

Как следует изимя json_encode () кодирует объект ассоциативного массива в виде строки в формате JSON.

Код CF

Эквивалент CF предназначен для создания структуры.Затем используйте serializeJSON () , чтобы преобразовать его в строку.Используя синтаксис структурного литерала, он очень похож

 #serializeJSON( {"email":"abc@example.com"} )#

Просто не забудьте заключить имена ключей в кавычки, чтобы предотвратить преобразование имен ключей в верхний регистр при сериализации.Кроме того, одно большое различие между PHP и CF состоит в том, что структуры PHP упорядочены по умолчанию.CF структуры не являются.В этом простом примере порядок не должен иметь значения, но он может иметь значение при сериализации.Если вам do нужна упорядоченная структура, посмотрите эту ветку:

"Как исправить` удалить алфавитный порядок по умолчанию для SerializeJSON () `

1 голос
/ 23 апреля 2019

PHP поддерживает массивы в полях формы, а ColdFusion - нет. В ColdFusion PHP-массивы - это в основном строки, которые выглядят и действуют как массивы, поэтому вы можете «подделать» массив. Ваше visit поле формы будет выглядеть так:

<cfhttpparam type="FORMFIELD" name="visit[email]" value="">
<cfhttpparam type="FORMFIELD" name="visit[whatever]" value="">
...