Chciałem dodać na swoją stronę walidację recaptcha, żeby boty dały mi spokój. Niestety siedzę nad tym kilka dni i nie wiem czemu nie działa. Strona jest podpięta pod CLOUDFLARE i może to generuje jakieś problemy ale kombinowałem z różnymi kodami i nie działa. Z tego co widzę, to jest problem, z tym, że przez POST nie wysyła mi " $_POST['g-recaptcha-response']" i cała walidacja nie może zakończyć się pomyślnie. Nie wiem z czego to wynika.
Poniżej moje kody:
plik contact.php
<?php include 'functions.php'; $data['success'] = true; //$_POST = multiDimensionalArrayMap('cleanEvilTags', $_POST); //$_POST = multiDimensionalArrayMap('cleanData', $_POST); $emailTo ='kontakt@test.pl'; $emailSubject = 'Wiadomość z formularza'; $name = $_POST['name']; $email = $_POST['email']; $comment = $_POST['comments']; if($name == '') { if($email == '') { if($comment == '') { if($data['success'] == true) { $send_name = "Imię: $name" . PHP_EOL . PHP_EOL; $send_email = "Email: $email" . PHP_EOL . PHP_EOL; $send_comment = "Wiadomość:\r\n$comment" . PHP_EOL . PHP_EOL; $headers = "From: TEST.PL <$email>" . PHP_EOL; $headers .= "Reply-To: $email" . PHP_EOL; $headers .= "MIME-Version: 1.0" . PHP_EOL; $headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL; $headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL; echo "<p>Dziękuję <strong>$name</strong> za kontakt, Twoja wiadomość została wysłana poprawnie :)</p>"; } ?>
kod formularza:
<h2>FORMULARZ KONTAKTOWY</h2> <div class="separator-image-contact"></div> <div id="contact-form"> <div id="message"></div> <form method="post" action="php/contact.php" name="contactform" id="contactform"> <input type="text" id="name" name="name" placeholder="Twoje imię..." /> <input type="text" name="email" id="email" placeholder="Twój email..." /> <textarea name="comments" id="comments" placeholder="Treść Twojej wiadomości..."></textarea> <div class="g-recaptcha" data-sitekey="6LcxxxxxxxxxxDkXk5g"></div> <input type="submit" class="send_message transition" id="submit" value="Wyślij wiadomość" /> </form> </div>
kod od reCaptcha:
$secret = '6Lcxxxxxxxxxx82'; $response = $_POST['g-recaptcha-response']; $remoteip = $_SERVER['REMOTE_ADDR']; $url = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$response&remoteip=$remoteip"); $result = json_decode($url, TRUE); if ($result['success'] == true) { COŚ MA SIĘ ZADZIAĆ :( }
plik functions.php:
<?php // Strips nasty tags from code.. function cleanEvilTags($data) { } // Cleans output data.. function cleanData($data) { } function multiDimensionalArrayMap($func,$arr) { foreach($arr AS $key => $value) { } } return $newArr; }
Proszę o pomoc. Kombinowałem z różnymi kodami reCaptcha, ale zawsze było tak, że jest błąd jakby się nie zaznaczyło ptaszka (mimo, że był zaznaczony) i ustaliłem, że problem jest z "$_POST['g-recaptcha-response']". W błędach PHP na serwerze wyświetla się wtedy linijka zawierająca "Undefined index g-recaptcha-response", niestety nie wiem co z tym zrobić.
Bardzo proszę o pomoc
