Поместите данные в URL-адрес, закодированный из действия публикации формы - PullRequest
0 голосов
/ 07 мая 2020

У меня есть форма, которая получает значения данных (uid, f_1_email, et c ...), которые мне нужно отправить в API, мне нужно получить эти значения, помещенные в этот URL-адрес в кодировке.

"cid=199&sid=2&uid=[uid]&f_1_email=[f_1_email]&f_3_firstname=[f_3_firstname]&f_4_lastname=[f_4_lastname]&f_11_postcode=[f_11_postcode]&f_12_phone1=[f_12_phone1]&f_135_nombre_empresa=[f_135_nombre_empresa]&f_134_cantidad_vehiculos=[f_134_cantidad_vehiculos]&f_133_tipo_servicio=[f_133_tipo_servicio]
"

Это полный код

<?php
$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://leadtowin.databowl.com/api/v1/lead",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "cid=199&sid=2&uid=[uid]&optin_email=[optin_email]&optin_email_timestamp=[optin_email_timestamp]&optin_phone=[optin_phone]&optin_phone_timestamp=[optin_phone_timestamp]&optin_sms=[optin_sms]&optin_sms_timestamp=[optin_sms_timestamp]&optin_postal=[optin_postal]&optin_postal_timestamp=[optin_postal_timestamp]&f_1_email=[f_1_email]&f_3_firstname=[f_3_firstname]&f_4_lastname=[f_4_lastname]&f_11_postcode=[f_11_postcode]&f_12_phone1=[f_12_phone1]&f_135_nombre_empresa=[f_135_nombre_empresa]&f_134_cantidad_vehiculos=[f_134_cantidad_vehiculos]&f_133_tipo_servicio=[f_133_tipo_servicio]
",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/x-www-form-urlencoded",
    "Accept-Encoding: UTF-8",
    "Content-Type: application/x-www-form-urlencoded",
    "Cookie: PHPSESSID=d053646c7953d9116849a8aa4717ab81"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Я пробую это, но не работает

"cid=199&uid=$_POST['uid']&f_1_email=$_POST['email']&f_3_firstname=$_POST['firstname']&f_4_lastname=$_POST['lastname']&f_11_postcode=$_POST['meta_Zip']&f_12_phone1=$_POST['mobile_phone']&f_135_nombre_empresa=$_POST['meta_empresa']&f_134_cantidad_vehiculos=$_POST['meta_cantidadVehiculos']&f_133_tipo_servicio=$_POST['meta_Gestion']"

1 Ответ

0 голосов
/ 07 мая 2020

Может быть, встроенная функция PHP упростит вам этот процесс (https://www.php.net/manual/en/function.http-build-query.php). Использование массива также делает его более читаемым и, следовательно, более чистым и меньшим количеством ошибок. Phrone:

<?php
$post_array = array(
    "cid" => "199",
    "sid" => "2",
    "uid" => $_POST['uid'],
    "optin_email" => $_POST['optin_email'],
    "optin_email_timestamp" => $_POST['optin_email_timestamp'],
    "optin_phone" => $_POST['optin_phone'],
    "optin_phone_timestamp" => $_POST['optin_phone_timestamp'],
    "optin_sms" => $_POST['optin_sms'],
    "optin_sms_timestamp" => $_POST['optin_sms_timestamp'],
    "optin_postal" => $_POST['optin_postal'],
    "optin_postal_timestamp" => $_POST['optin_postal_timestamp'],
    "f_1_email" => $_POST['f_1_email'],
    "f_3_firstname" => $_POST['f_3_firstname'],
    "f_4_lastname" => $_POST['f_4_lastname'],
    "f_11_postcode" => $_POST['f_11_postcode'],
    "f_12_phone1" => $_POST['f_12_phone1'],
    "f_135_nombre_empresa" => $_POST['f_135_nombre_empresa'],
    "f_134_cantidad_vehiculos" => $_POST['f_134_cantidad_vehiculos'],
    "f_133_tipo_servicio" => $_POST['f_133_tipo_servicio']
);
$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://leadtowin.databowl.com/api/v1/lead",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => http_build_query($post_array),
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/x-www-form-urlencoded",
    "Accept-Encoding: UTF-8",
    "Content-Type: application/x-www-form-urlencoded",
    "Cookie: PHPSESSID=d053646c7953d9116849a8aa4717ab81"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
?>

Так и должно быть.

...