Hej,
To moje pierwsze zapytanie więc prosze o wyrozumiałość.
Mam problem odnośnie stworzenia formularza zamówienia. Póki co dodalam kilka pól, które w przyszłości zamierzam rozbudować ale niestety po sprawdzeniu wiadomości nie dochodzą. Po wypełnieniu pól formularza wyskakuje komunikat: "Ups, tutaj nic nie ma" i wraca na stronę główną. Formularz robiłąm zgodnie z instrukcją na stronie:
https://devcave.pl/dajsiepoznac2017/formula...taktowy-HTML-JS.
Pewnie coś pokręciłam ale dopiero się uczę więc nie rozumiem gdzie jest błąd. Prosze o pomoc. Poniżej wklejam kod.
funtions.php:
<?php
use Respect\Validation\Exceptions\NestedValidationException;
use Respect\Validation\Rules\Email;
use Respect\Validation\Rules\Length;
use Respect\Validation\Rules\StringType;
use Respect\Validation\Rules\NotEmpty;
use Respect\Validation\Validator;
require_once __DIR__ . '/vendor/autoload.php';
/**
* @param array $form
*
* @return array of errors
*/
{
$errors = [];
$rules = [
'email' => (new Validator())->addRules([new NotEmpty(), new Email()]),
'name' => (new Validator())->addRules([new NotEmpty(), new StringType(), new Length(4, 78)]),
'message' => (new Validator())->addRules([new NotEmpty(), new StringType(), new Length(8, 6000)]),
];
$validationMessages = (require_once __DIR__ . '/settings.php')['validationMessages'];
foreach ($rules as $key => $validator) {
/** @var $validator Validator */
try {
$validator->setName($key)->assert($form[$key] null); } catch (NestedValidationException $exception) {
$exception->findMessages($validationMessages);
$errors[$key] = $exception->getMessages();
}
}
if (validateReCaptcha
($form['g-recaptcha-response'] '') === false) { $errors['recaptcha'][] = "Potwierdź, że nie jesteś robotem!";
}
return $errors;
}
function validateReCaptcha(string $code): bool
{
$url = 'https://www.google.com/recaptcha/api/siteverify?' . http_build_query([
'secret' => (require __DIR__ . '/settings.php')['reCaptcha']['secret'],
'response' => $code,
]);
$response = json_decode($content, true);
return $response['success'];
}
function getMailer(): Swift_Mailer
{
$config = (require __DIR__ . '/settings.php')['mailer'];
$transport = new Swift_SmtpTransport($config['host'], $config['port']);
$transport->setUsername($config['username']);
$transport->setPassword($config['password']);
return new Swift_Mailer($transport);
}
function prepareMail
(array $params): Swift_Message
{
$config = (require __DIR__ . '/settings.php')['mailer'];
$mail = new Swift_Message(
$params['name'],
$params['message'],
'text/plain',
'UTF-8'
);
$mail->setFrom($params['userEmail']);
$mail->setReplyTo($params['userEmail']);
$mail->setTo($config['email']);
return $mail;
}
function sendMail
(array $params): bool
{
$mailer = getMailer();
return $mailer->send(prepareMail($params));
}
emailform.php:
<?php
require_once 'swiftmailer/lib/swift_required.php';
$config = require_once 'emailconfig.php';
$secretKey = $config['secretKey'];
$userEmail= $_POST['userEmail'];
$subject= filter_var($_POST['subject'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
$messageText= filter_var($_POST['message'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
$checkIfBot = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'&response='.$_POST['g-recaptcha-response']); $recaptcha = json_decode($checkIfBot);
if(!filter_var($name, FILTER_VALIDATE_EMAIL)){
$alert = 'To pole jest wymagane!';
}
$alert = 'Wpisz swój adres e-mail!';
}
else if (empty($message)){ $alert = 'Pusta wiadomość? Napisz coś!';
}
else if($recaptcha->success===false){
$alert = 'Potwierdź, że nie jesteś robotem!';
}
else {
$transport = Swift_SmtpTransport::newInstance($config['mailServer'], $config['port'])
->setUsername($config['username'])
->setPassword($config['password']);
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance($subject)
->setFrom($name)
->setReplyTo($email)
->setTo($config['myEmail'])
->setBody($message);
$emailSent = $mailer->send($message);
if ($emailSent){
$alert = 'Wysłano. Dzięki za wiadomość!';
}
else {
$alert = 'Coś poszło nie tak.';
}
}
$response = json_encode
(array( 'text' => $alert
));
?>