У меня есть форма, которая отправляет данные на страницу PHP на том же локальном сайте. Я знаю, что данные публикуются правильно, потому что var_dump($_POST)
выводит массив с ожидаемой информацией, как показано ниже.
Однако, когда я пытаюсь установить переменную в одно из значений в массиве, я получаю уведомление об ошибке в журналах, в котором говорится, что у меня есть неопределенный индекс (для поля ответа электронной почты и g-captcha), а код PHP не работать, как ожидалось.
Я довольно долго ломал голову, пытаясь понять, почему это происходит, и другие подобные вопросы не дали ответа. Любая помощь будет оценена по достоинству. Спасибо!
Код формы:
<form action="recaptcha.php" method="post" class="pardot-email-form-handler" id="carter" novalidate>
<input class="one-field-pardot-form-handler" maxlength="80" name="email" id="email" size="20" type="email" placeholder="Enter Email Address" required="required" />
<div style="position:absolute; left:-9999px; top: -9999px;">
<label for="pardot_extra_field">
Comments
</label>
<input type="text" id="pardot_extra_field" name="pardot_extra_field">
</div>
<button class="g-recaptcha" data-sitekey="6LeErDUUAAAAAEOYqDrylFnEwQkYp7qmPjs2_Z0o" data-callback="captchaSubmit" data-badge="inline">
Submit
</button>
</form>
Код PHP:
var_dump($_POST);
// reCaptcha info
$secret = "anonymous";
$remoteip = $_SERVER["REMOTE_ADDR"];
$url = "https://www.google.com/recaptcha/api/siteverify";
// Form info
$email = $_POST["email"];
$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_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 "Success!";
else
echo "Failure!";
Результаты Var_Dump:
array (size=3)
'email' => string 'an email address' (length=21)
'pardot_extra_field' => string 'a comment' (length=12)
'g-recaptcha-response' => string 'a long response' (length=441)
Сообщение об ошибке PHP:
[01 января 2018 15:42:02 UTC] Уведомление PHP: неопределенный индекс: первый в C:\wamp\www\local\public\recaptcha.php в строке 17
[01 января 2018 15:42:02 UTC] Трассировка стека PHP:
[01 января 2018 15:42:02 UTC] PHP 1. {main}() C:\wamp\www\local\public\recaptcha.php:0
[01 января 2018 15:42:02 UTC] Уведомление PHP: неопределенный индекс: последний в C:\wamp\www\local\public\recaptcha.php в строке 18
[01 января 2018 15:42:02 UTC] Трассировка стека PHP:
[01 января 2018 15:42:02 UTC] PHP 1. {main}() C:\wamp\www\local\public\recaptcha.php:0
first
. Отсюда и ошибка - person RamC   schedule 01.01.2018recaptcha.php
? - person RamC   schedule 01.01.2018Undefined index first
, что означает, что вы ищете элементfirst
внутри массива, в котором его нет. Теперь мой вопрос: в какой строке вашего кода вы ищете элементfirst
? - person RamC   schedule 01.01.2018