Kontaktní formulář s reCaptcha v PHP, jQuery a Bootstrap

Zde je script – ukázkový kód kontaktního formuláře v PHP a Javascriptu, který nasadíme do šablony s Bootstrap 4.5 a jQuery a bude chráněn proti spamu pomocí Google reCAPTCHA. Jedná se o základní script k možnému uzpůsobení.

Nejprve importujeme potřebné knihovny Bootstrap 4.5, jQuery a Google reCAPTCHA do naší šablony:

<!DOCTYPE html>
<html>
<head>
<title>Kontaktní formulář</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<div class="container mt-5">
<form action="send_email.php" method="POST">
<div class="form-group">
<label for="name">Jméno:</label>
<input type="text" class="form-control" id="name" name="name" required>
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<div class="form-group">
<label for="message">Zpráva:</label>
<textarea class="form-control" id="message" name="message" rows="5" required></textarea>
</div>
<div class="form-group">
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
</div>
<button type="submit" class="btn btn-primary">Odeslat</button>
</form>
</div>
</body>
</html>

Kód PHP send_email.php pro zpracování odeslaného formuláře a odeslání emailu:

<?php
if($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

 

// Validace reCAPTCHA
$recaptcha_secret = "YOUR_SECRET_KEY";
$recaptcha_response = $_POST['g-recaptcha-response'];
$recaptcha_url = "https://www.google.com/recaptcha/api/siteverify?secret=$recaptcha_secret&response=$recaptcha_response";
$recaptcha = json_decode(file_get_contents($recaptcha_url));

if($recaptcha->success) {
$to = 'VAS_EMAIL';
$subject = 'Nová zpráva z kontaktního formuláře';
$body = "Jméno: $name \nEmail: $email \nZpráva: $message";
$headers = 'From: ' . $email;

if(mail($to, $subject, $body, $headers)) {
echo 'Email byl úspěšně odeslán.';
} else {
echo 'Něco se pokazilo. Zkuste to prosím znovu.';
}
} else {
echo 'Prosím potvrďte, že nejste robot.';
}
} else {
header('Location: index.php');
}
?>

Nezapomeňte nahradit YOUR_SITE_KEY a YOUR_SECRET_KEY správnými klíči pro Google reCAPTCHA.

Tímto způsobem vytvořený kontaktní formulář bude chráněn proti spamu a bude odesílat emaily na zadanou adresu VAS_EMAIL

Přejít nahoru