Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][HTML][PHP]Formularz kontaktowy nie dostarcza wiadomości
abaza
post 8.05.2024, 09:52:27
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.05.2024

Ostrzeżenie: (0%)
-----


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:
  1. <?php
  2.  
  3. use Respect\Validation\Exceptions\NestedValidationException;
  4. use Respect\Validation\Rules\Email;
  5. use Respect\Validation\Rules\Length;
  6. use Respect\Validation\Rules\StringType;
  7. use Respect\Validation\Rules\NotEmpty;
  8. use Respect\Validation\Validator;
  9.  
  10. require_once __DIR__ . '/vendor/autoload.php';
  11.  
  12. /**
  13.  * @param array $form
  14.  *
  15.  * @return array of errors
  16.  */
  17. function validateContactForm(array $form): array
  18. {
  19. $errors = [];
  20. $rules = [
  21. 'email' => (new Validator())->addRules([new NotEmpty(), new Email()]),
  22. 'name' => (new Validator())->addRules([new NotEmpty(), new StringType(), new Length(4, 78)]),
  23. 'message' => (new Validator())->addRules([new NotEmpty(), new StringType(), new Length(8, 6000)]),
  24. ];
  25. $validationMessages = (require_once __DIR__ . '/settings.php')['validationMessages'];
  26.  
  27. foreach ($rules as $key => $validator) {
  28. /** @var $validator Validator */
  29. try {
  30. $validator->setName($key)->assert($form[$key] questionmark.gif null);
  31. } catch (NestedValidationException $exception) {
  32. $exception->findMessages($validationMessages);
  33. $errors[$key] = $exception->getMessages();
  34. }
  35. }
  36. if (validateReCaptcha($form['g-recaptcha-response'] questionmark.gif '') === false) {
  37. $errors['recaptcha'][] = "Potwierdź, że nie jesteś robotem!";
  38. }
  39. return $errors;
  40. }
  41. function validateReCaptcha(string $code): bool
  42. {
  43. $url = 'https://www.google.com/recaptcha/api/siteverify?' . http_build_query([
  44. 'secret' => (require __DIR__ . '/settings.php')['reCaptcha']['secret'],
  45. 'response' => $code,
  46. ]);
  47. $content = file_get_contents($url);
  48. $response = json_decode($content, true);
  49. return $response['success'];
  50. }
  51. function getMailer(): Swift_Mailer
  52. {
  53. $config = (require __DIR__ . '/settings.php')['mailer'];
  54. $transport = new Swift_SmtpTransport($config['host'], $config['port']);
  55. $transport->setUsername($config['username']);
  56. $transport->setPassword($config['password']);
  57. return new Swift_Mailer($transport);
  58. }
  59. function prepareMail(array $params): Swift_Message
  60. {
  61. $config = (require __DIR__ . '/settings.php')['mailer'];
  62. $mail = new Swift_Message(
  63. $params['name'],
  64. $params['message'],
  65. 'text/plain',
  66. 'UTF-8'
  67. );
  68. $mail->setFrom($params['userEmail']);
  69. $mail->setReplyTo($params['userEmail']);
  70. $mail->setTo($config['email']);
  71. return $mail;
  72. }
  73. function sendMail(array $params): bool
  74. {
  75. $mailer = getMailer();
  76. return $mailer->send(prepareMail($params));
  77. }


emailform.php:
  1. <?php
  2. require_once 'swiftmailer/lib/swift_required.php';
  3. $config = require_once 'emailconfig.php';
  4. $secretKey = $config['secretKey'];
  5. $userEmail= $_POST['userEmail'];
  6. $subject= filter_var($_POST['subject'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
  7. $messageText= filter_var($_POST['message'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
  8. $checkIfBot = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'&response='.$_POST['g-recaptcha-response']);
  9. $recaptcha = json_decode($checkIfBot);
  10.  
  11. if(!filter_var($name, FILTER_VALIDATE_EMAIL)){
  12. $alert = 'To pole jest wymagane!';
  13. }
  14. else if (empty($email)){
  15. $alert = 'Wpisz swój adres e-mail!';
  16. }
  17. else if (empty($message)){
  18. $alert = 'Pusta wiadomość? Napisz coś!';
  19. }
  20. else if($recaptcha->success===false){
  21. $alert = 'Potwierdź, że nie jesteś robotem!';
  22. }
  23. else {
  24. $transport = Swift_SmtpTransport::newInstance($config['mailServer'], $config['port'])
  25. ->setUsername($config['username'])
  26. ->setPassword($config['password']);
  27. $mailer = Swift_Mailer::newInstance($transport);
  28. $message = Swift_Message::newInstance($subject)
  29. ->setFrom($name)
  30. ->setReplyTo($email)
  31. ->setTo($config['myEmail'])
  32. ->setBody($message);
  33. $emailSent = $mailer->send($message);
  34. if ($emailSent){
  35. $alert = 'Wysłano. Dzięki za wiadomość!';
  36. }
  37. else {
  38. $alert = 'Coś poszło nie tak.';
  39. }
  40. }
  41. $response = json_encode(array(
  42. 'text' => $alert
  43. ));
  44. exit($response);
  45. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Salvation
post 9.05.2024, 11:41:24
Post #2





Grupa: Zarejestrowani
Postów: 357
Pomógł: 70
Dołączył: 15.07.2014

Ostrzeżenie: (0%)
-----


Cytat(abaza @ 8.05.2024, 10:52:27 ) *
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.

Szczerze powiedziawszy, to instrukcja, którą znalazłaś, jest do strony "prostej" - bez frameworka czy CMS-a.
Ty masz Wordpressa, więc kod musisz _świadomie_ dostosować pod silnik. Jeżeli chcesz mieć 100% kontroli nad kodem, to robisz wtyczkę albo... wykorzystujesz już jakąś wtyczkę ze sklepu.
Lub możesz też zrobić custom form sama: https://quadlayers.com/create-a-form-in-wordpress/

Ten post edytował Salvation 9.05.2024, 11:45:31
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.05.2024 - 20:45