У меня есть контактная форма на моем веб-сайте, которая использует reCAPTCHA version 2
для предотвращения спам-сообщений. Тем не менее, довольно многие проходят через! Как я мог остановить это? Любая помощь будет принята с благодарностью!
Вот содержимое ContactForm. php file:
class ContactForm extends Form {
public function __construct(Controller $controller, $name)
{
$emails = array(
'e-mail address here'=>'General',
'e-mail address here'=>'Sales',
'e-mail address here'=>'Technical Support',
);
$fields = FieldList::create(
TextField::create('Name')->setAttribute('placeholder', 'Name'),
EmailField::create('Email')->setAttribute('placeholder', 'Email'),
DropdownField::create('Destination', 'Enquiry', $emails)->setEmptyString("(Department)"),
TextareaField::create('Message')
->setAttribute('placeholder', 'Message')
->setAttribute('rows', 9)
->setAttribute('cols', 25),
LiteralField::create('Captcha', '<div class="g-recaptcha" data-sitekey="MY KEY GOES HERE"></div>')
);
$actions = new FieldList(
FormAction::create('Contact', 'Send')->setAttribute('disabled',true)
);
$validator = new RequiredFields('Name', 'Email', 'Message', 'Destination');
//return Form::create($controller, $name, $fields, $actions, $validator);
parent::__construct($controller, $name, $fields, $actions, $validator);
}
public function Contact($data)
{
$email = new Email();
$email->setFrom($data['Email']);
$email->setSubject("Website Enquiry");
$email->setTo($data['Destination']);
$messageBody = "<p><strong>Name:</strong> {$data['Name']}</p><p><strong>Message:</strong> {$data['Subject']}</p><p><strong>Message:</strong> {$data['Message']}</p>";
$email->setBody($messageBody);
$email->send();
Controller::curr()->redirectBack();
}
}
Это код ContactPage_Controller. php file:
<?php
class ContactPage_Controller extends Page_Controller {
public static $allowed_actions = array(
'ContactForm'
);
public function ContactForm(){
return ContactForm::create($this, 'ContactForm');
}
}
Это содержимое файла ContactPage.ss:
<div class="service-menu-wrapper">
<ul class="services-menu">
<% control $ServiceMenu %>
<li><a class="hvr-float-shadow internal-link $LinkingMode" href="$Link"><i class="fa $Icon"></i></a></li>
<% end_control %>
</ul>
</div>
<div class="typography container">
<div class="content-container js-content">
<article>
<div class="custom-title">
<span>Contact us</span>
</div>
<div class="panel">
<div class="section left contact-form-wrapper">
$ContactForm
</div>
<div class="section right map">
<iframe src="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d92480.79610056261!2d-4.0153309783259425!3d52.475305088108385!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0xc657c04368dfd9ad!2sAtebol!5e0!3m2!1sen!2suk!4v1526831824458"
width="100%" height="450" frameborder="0" style="border:0"
allowfullscreen></iframe>
</div>
</div>
</article>
</div>
</div>
<script>
$("form").submit(function(event) {
var recaptcha = $("#g-recaptcha-response").val();
if (recaptcha === "") {
event.preventDefault();
alert("Please fill in ReCaptcha");
}
});
</script>
Это содержимое файла ContactPage. php Файл:
<?php
class ContactPage extends Page
{
private static $db = array();
private static $has_one = array();
private static $has_many = array();
private static $summary_fields = array();
public function getCMSFields()
{
$fields = parent::getCMSFields();
return $fields;
}
}