Так что я новичок в этом, поэтому, пожалуйста, извините, если мой вопрос не опубликован, как ожидалось. Любые предложения и советы будут любезно оценены.
Итак, у меня есть форма с несколькими полями, которая публикует файл PHP, который проверяет невидимую reCAPTCHA от Google, а затем переходит к публикации в Pardot (стороннее программное обеспечение, уведомляющее нашу команду по продажам)
После этого сообщения Как опубликовать данные формы на стороннем сервере после успешного завершения невидимого Google reCaptcha?
Я могу успешно отправить поле формы электронной почты в Pardot, но не могу отправить другие поля и / или заменить поле электронной почты другим.
Другими словами, у меня есть два поля name = "firstname" и name = "email", когда я отправляю поле электронной почты, которое оно публикует, но если я изменяю "email" на "firstname" в PHP, оно не запускается.
Исходя из того, что я прочитал, я относительно уверен, что мне нужно будет создать массив в разделе CURLOPT_POSTFIELDS моего PHP, который в настоящее время отправляет только одно значение ($ pardotPost), но перед тем, как попытаться отправить массив, я хотел проверить другие поля формы, чтобы увидеть, работает ли, как указано выше.
Вот моя разметка на стороне клиента:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Form</title>
<style>
input:required:invalid, input:focus:invalid {
/* insert your own styles for invalid form input */
-moz-box-shadow: none;
color: red!important;
}
input:required:valid {
/* insert your own styles for valid form input */
color: green!important;
}
</style>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
function onSubmit(token) {
document.getElementById("pardot-form-full-width").submit();
}
</script>
</head>
<body>
<div class="mn-call-form-wrapper">
<form id="pardot-form-full-width"
class="uk-form uk-grid-medium uk-form-horizontal invisible-recaptcha"
action="reCAPTCHA.php"
method="POST"
enctype="multipart/form-data"
uk-grid>
<!-- First Name -->
<div class="uk-width-1-2@s">
<input placeholder="First Name *"
class="mix-contact-form-item uk-input"
type="text"
id="firstname"
name="firstname"
required=”required”/>
</div>
<!-- END - First Name -->
<!-- Email Address -->
<div class="uk-width-1-2@s">
<input placeholder="Email *"
class="mix-contact-form-item uk-input"
type="email"
id="email"
name="email"
required="required"/>
</div>
<!-- END - Email Address -->
<!-- Submit Button -->
<div class="mix-signup-submit-button-wrapper">
<button class="g-recaptcha"
data-sitekey="myGrecaptchaKeyIsHere"
data-callback="onSubmit"> Send <span uk-icon="arrow-right" class="uk-icon"></span>
</button>
</div>
<!-- END - Submit Button -->
</form>
</div>
</body>
</html>
Вот моя разметка на стороне сервера (reCAPTCHA.php):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Results</title>
</head>
<body>
<?php
// reCaptcha info
$secret = "mySecretKey";
$remoteip = $_SERVER["REMOTE_ADDR"];
$url = "https://www.google.com/recaptcha/api/siteverify";
// Form info
$firstname = $_POST["firstname"];
$response = $_POST["g-recaptcha-response"];
// Curl Request
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, array(
'secret' => $secret,
'response' => $response,
'remoteip' => $remoteip
));
$curlData = curl_exec($curl);
curl_close($curl);
// Parse data
$recaptcha = json_decode($curlData, true);
if ($recaptcha["success"]) {
echo "Thank you, we will be in contact with you soon.";
$pardotPost ='firstname='. $_POST["firstname"];
$curl_handle = curl_init();
$url = "http://pardot.com/our/url";
curl_setopt ($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_POST, true);
curl_setopt ($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl_handle, CURLOPT_POSTFIELDS, $pardotPost);
curl_setopt( $curl_handle, CURLOPT_SSL_VERIFYPEER, false );
$result = curl_exec ($curl_handle);
curl_close ($curl_handle);
}
else {
echo "Oh no, it seems something went wrong.";
}
?>
</body>
</html>
В разделах PHP ниже, если я изменю значения с имени на электронное письмо, я могу подтвердить, что данные отправляются и принимаются Pardot
// Does not work
$firstname = $_POST["firstname"];
$pardotPost ='firstname='. $_POST["firstname"];
// Does work
$email = $_POST["email"];
$pardotPost ='email='. $_POST["email"];
Так что мой вопрос состоит из двух частей.
Во-первых, почему форма отправляется, если используется значение электронной почты, и, во-вторых, как мне добавить несколько других полей формы и отправить их в Pardot после успешной (невидимой) проверки Google reCAPTCHA?
Заранее спасибо!