<?php
require_once 'swiftmailer/lib/swift_required.php'; //najlepiej uzyc composera
$config = require_once 'emailconfig.php'; //brakuje __DIR__
$secretKey = $config['secretKey'];
$userEmail = $_POST['userEmail'];
$subject = filter_var($_POST['subject'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
$message = 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($userEmail, FILTER_VALIDATE_EMAIL)) {
$alert = 'Podaj poprawny email!'; //powinien byc arrayem
} else if (empty($subject)) {
$alert = 'Wpisz jakiś temat!'; //powinien byc arrayem
} else if (empty($message)) {
$alert = 'Pusta wiadomość? Napisz coś!'; //powinien byc arrayem
} else if ($recaptcha->success === false) {
$alert = 'Potwierdź, że nie jesteś robotem!'; //powinien byc arrayem
} 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($userEmail)
->setReplyTo($userEmail)
->setTo($config['myEmail'])
->setBody($message);//ze niby body, to nasz message instance? wywali error.. nadpisujesz zmienna
$emailSent = $mailer->send($message);
if ($emailSent) {
$alert = 'Wysłano. Dzięki za wiadomość!';
} else {
$alert = 'Coś poszło nie tak.';
}
}
$response = json_encode(array( //shortcode?
'text' => $alert
));
exit($response);
?> <- niepotrzebne
Taki strukturalny kodzik. Nic specjalnego... prócz użycia swiftmailera : )
- Ogólnie nie tworzysz własnych funkcji, co utrudnia późniejsze wykorzystanie kodu.
- W konfiguracji użyłeś [], a w programie używasz array(). Bądź konsekwentny.
- Masz tam błąd, który nie pozwala na normalne działanie programu. (Nadpisujesz message instancją)
- Jeśli ktoś popełni wiele błędów w formularzu i tak zobaczy ten jeden.
- Jest możliwość wysłania recaptchy bez jsa: http://stackoverflow.com/questions/18853007
Oto moja odpowiedź na twój kod: (robiona na kolanie w 30min)
https://gist.github.com/xandros15/3c17a9c5961cca901bbfea3c226eca3b