Google captcha не работает с кодом silverstripe

В приведенном ниже коде идет капча, и после того, как мы доказали, что мы не робот, ничего не произошло. Я добавил как открытый, так и закрытый ключ.

Кроме того, инструмент капчи находится над заголовком, если при добавлении какого-либо скрытого поля возникает ошибка.

<html>
<head>
<script src='https://www.g**le.com/recaptcha/api.js'></script>
</head>
<body>
<?php

class ContactPage extends Page
{
private static $db = array(
'TelCustomerSupport'    => 'Varchar',
'TelProjectSupport'     => 'Varchar',
'OfficeName'            => 'Text',
'OfficeStreetAddress'   => 'Text',
'OfficeAddressLocality' => 'Text',
'OfficePostalCode'      => 'Varchar',
'OfficeMapLink'         => 'Text',
'OfficeLatitude'        => 'Text',
'OfficeLongitude'       => 'Text',
);

public function getCMSFields()
{
$fields = parent::getCMSFields();
// Add extra fields
$fields->addFieldToTab("Root.Main", new TextField('TelCustomerSupport', 'Phone - Customer, Trade & Retail Support'), "Content");
$fields->addFieldToTab("Root.Main", new TextField('TelProjectSupport', 'Phone - Project Support'), "Content");

$fields->addFieldToTab("Root.Main", new TextField('OfficeName'), "Content");
$fields->addFieldToTab("Root.Main", new TextField('OfficeStreetAddress'), "Content");
$fields->addFieldToTab("Root.Main", new TextField('OfficeAddressLocality'), "Content");
$fields->addFieldToTab("Root.Main", new TextField('OfficePostalCode'), "Content");
$fields->addFieldToTab("Root.Main", new TextField('OfficeMapLink'), "Content");
$fields->addFieldToTab("Root.Main", new TextField('OfficeLatitude'), "Content");
$fields->addFieldToTab("Root.Main", new TextField('OfficeLongitude'), "Content");

return $fields;
}

}
class ContactPage_Controller extends NetSuitePage_Controller
{
private static $allowed_actions = array('ContactForm');

// Generate the form
public function ContactForm()
{
// Create fields
$fields = new FieldList(
TextField::create("FirstName")->setTitle(_t('Contact.FIRSTNAME')),
TextField::create("LastName")->setTitle(_t('Contact.LASTNAME')),
EmailField::create("Email")->setTitle(_t('Contact.EMAILADDRESS')),
TextField::create("Phone")->setTitle(_t('Contact.PHONENUMBER')),
DropdownField::create('Iam', _t('Contact.IAMA'), $this->translateNetsuiteConfigArray('Contact', 'Iam')),
TextField::create("SendSubject")->setTitle(_t('Contact.SUBJECT')),
HoneyPotField::create("Subject2")->setTitle('Subject2'),
TextareaField::create("Message")->setTitle(_t('Contact.MESSAGE'))->setColumns(30)->setRows(10)
);// Create actions
$submitbutton = new FormAction('doContactForm', _t('Contact.SEND'));
$submitbutton->addExtraClass('btn btn-black');
$actions = new FieldList(
$submitbutton
);$validator = ZenValidator::create();
$validator->addRequiredFields(array('FirstName', 'LastName', 'Email', 'Phone', 'Iam', 'SendSubject', 'Message'));
$validator->setConstraint('FirstName', Constraint_length::create('max', 32));
$validator->setConstraint('LastName', Constraint_length::create('max', 32));
$validator->setConstraint('Phone', Constraint_length::create('min', 7));
$validator->setConstraint('Email', Constraint_type::create('email'));
$validator->setConstraint('Phone', Constraint_type::create('digits'));
print"<div class=\"g-recaptcha\" data-sitekey=\"6LdCAxEUAAAAAHSWL1xulOjZLv-6PPHTSQJdjpEu\"></div>"$form = new Form($this, 'ContactForm', $fields, $actions, $validator);
$form->addExtraClass('contact-form');
$form->setFormMethod('POST', true);

return $form;
}
// Deal with form submission
public function doContactForm($data, $form)
{

$submission = new ContactFormSubmission();
$form->saveInto($submission);
$submission->write();

$data['path'] = print_r($this->refererTracker->retrieveAll(), true);

$email = new Email();
$email->setTemplate('ContactFormEmail');
$email->populateTemplate($data);
$email->setTo($this->getNetsuiteConfig('Contact', 'Emails'));
$email->setFrom("no-reply@warmup.co.uk");
$email->setSubject('[warmup.co.uk] New contact from the website');
$email->populateTemplate($data);
$email->send();

$post = $this->getNetsuiteConfig('Contact');

$post->firstname                    = $data['FirstName'];
$post->lastname                     = $data['LastName'];
$post->email                        = $data['Email'];
$post->phone                        = $data['Phone'];
$post->custentity116                = $data['Iam'];
$post->custentitysubject_contact_us = $data['SendSubject'];
$post->custentitymessage_contact_us = $data['Message'];

if(isset($_POST['g-recaptcha-response'])&& $_POST['g-recaptcha-response']){
var_dump($_POST);
$secret = " 6LdCAxEUAAAAAIss47kbDqOWVaf3H2ruMkgddKTa";
$ip = $_SERVER['REMOTE_ADDR'];
$captcha = $_POST['g-recaptcha-response'];
$rsp  = file_get_contents("https://www.***.com/recaptcha/api/siteverify?secret=$secret&response=$captcha&remoteip$ip");
var_dump($rsp);
$arr = json_decode($rsp,TRUE);
if($arr['success'])
{// Check for success
if ($this->queueNetSuitePost($post)) {
return $this->redirect(Director::get_current_page()->Link()."?success=1");
}
}

else{
// Redirect back with form data and error message
Session::set('FormInfo.' . $form->FormName() . '.data', $data);
Session::set('FormInfo.'.$form->FormName().'.errors', array());
$form->sessionMessage("Netsuite error", 'bad');

return $this->redirectBack();
}
}}

// Returns true if form submitted successfully
public function Success()
{
return isset($_REQUEST['success']) && $_REQUEST['success'] == "1";
}

public function getCurrentSubsite()
{
$subsite = Subsite::currentSubsite();

if($subsite) {
return $subsite->Title;
}
return $subsite;
}

}

-1

Решение

«Печать» или «эхо» будет отображаться немедленно. Остальная часть вашего кода / шаблона не будет отображаться позже. Если вы хотите вставить html, вам лучше добавить LiteralField в вашу форму.

Что может быть еще лучше, это использовать модуль, который предоставляет recaptcha в простом в использовании поле формы, например, https://github.com/Level51/silverstripe-recaptcha

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector