ROG Innovation Logo

Tutorials, Gadgets und vieles mehr - Idea. Creation. Success. - Let's create the future!

PHP Kontaktformular mit Google reCaptcha Spamschutz

reCaptcha

Inhaltsverzeichnis:
  - Einleitung
  - reCaptcha
  - Beispiel
  - Erstellung
  - Einbindung
  - Auswertung (PHP)
  - Code Beispiel ohne JavaScript
  - Code Beispiel (Download)

info Inhalt wurde mit PHP 7.0.1 geprüft 

Einleitung

Bei vielen Websiten soll dem Websitebesucher die Kontakktaufnahme mit dem Websitebetreiber durch ein auf der Website eingebautes Kontakktformular erleichtert werden.
Im diesem Tutorial wird Schritt für Schritt erklärt wie ein solches Kontaktformular auf der eigenen Website erstellt werden kann.
Wir haben uns für die PHP Varriante mit dem Spamschutz vom Google reCaptcha entschieden, da zum einen gratis ist und zum anderen für eiin einfaches Kontaktformular sehr geeignet ist.
Für eine einwandfreie Funktione dieses Kontakktformular muss auf dem Websiteserver mind. die PHP Version 7.0 installiert sein.

reCaptcha

Was ist überhaupt Google reCaptcha? reCaptcha von Google ist ein gratis Captcha-Dienst und kann in die eigene Website z.B. als Formular Spamschutz eingebunden und verwendet werden.
Die Aufgabe von reCaptcha besteht darin, bestimmte Handlung im Internet von einem Menschen zu einem Bot (Roboter oder automatisierter Spamserver) zu unterscheiden.
Somit kann sichergestellt werden, dass z.B. ein Kontaktfkormular wirklich von einem Menschen ausgefüllt wurde und nicht von einem Bot mit Spam zugemüllt wurde.

Beispiel


Name


e-Mail


Nachricht






Erstellung

Um die reCaptcha Funktion zu nutzen einfach auf Google reCaptcha mit seinem Google Account einloggen.
Nun kann die Website oder auch mehrere Websites festgelegt werden, welche den reCaptcha Code danach zur Spamverhinderung verwenden können (hier müssen ebenfalls auch allfällige Unterdomänen eingetragen werden).

reCaptcha

Danach kann schon mit dem Einbinden des Codes in die eigene Website begonnen werden.

Einbindung

Hierzu wird die Formularseite 'formular.html' oder 'formular.php' erstellt.

HTML Code
<html>
<head>
<title>PHP Kontaktformular mit Google reCAPTCHA Spamschutz</title>
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>
<body>
  <h1>PHP Kontaktformular mit Google reCAPTCHA Spamschutz</h1>
  <!-- Fallback bei dektiviertem JavaScript im Browser -->
  <noscript>
    <span style="color: red;">Bitte JavaScript im Browser aktivieren!</span>
  </noscript>
  <form id="comment_form" action="auswertung.php" method="post">
    Name<br>
    <input type="text" name="name" required="required" placeholder="Name Bitte hier eingeben" size="40"><br><br>
    e-Mail<br>
    <input type="email" name="email" required="required" placeholder="e-Mail bitte hier eingeben" size="40"><br><br>
    Nachricht<br>
    <textarea name="comment" placeholder="Nachricht bitte hier eingeben" required="required" rows="8" cols="39"></textarea><br><br>
    <div class="g-recaptcha" data-sitekey="*---WEBSITESCHLÜSSEL---"></div><br>
    <input type="submit" name="submit" value="Senden"><br><br>
  </form>
</body>
</html>

*---WEBSITESCHLÜSSEL--- Muss durch den eigenen Google reCaptcha-Websitschlüssel ersetzt werden.
Den Website Schlüssel befindet Sich im reCaptcha Menu unter dem Punkt 'Schritt 1: Clientseitige Integration' (auf klicken).

reCaptcha

reCaptcha

Genauer Informationen zur Benutzung des reCAPTCHA von Google sind hier zu finden: Google Developers reCAPTCHA.

Achtung!
reCaptcha funktioniert nur wenn JavaScript im Browser nicht deaktiviert wurde.

Auswertung (PHP)

Kommen wir zur Auswertung. Natürlich müssen wir das Ergebniss von Google reCapptcha auslesen, damit wir zwischen Spam oder eben nicht Spam unterscheiden können.
Hierfür wird der Rückgabewert der Variabel 'g-recaptcha-response' mit der Kombination von unserem geheimen Schlüssel (Secret Key) verwendet und an eine PHP-Seite zur Auswertung weitergeleitet (in unserem Beispiel: 'auswertung.php').

PHP Code
<?php
// Variabeln
$name;
$email;
$comment;
$captcha;
// Variabeln mit Inhalt aus dem Formular befüllen
if(isset($_POST['name'])){$name=$_POST['name'];}
else {$name ="";}

if(isset($_POST['comment'])){$comment=$_POST['comment'];}
else {$comment ="";}

if(isset($_POST['email'])){$email=$_POST['email'];}
else {$email ="";}

if(isset($_POST['g-recaptcha-response'])){$captcha=$_POST['g-recaptcha-response'];}
else {$captcha ="";}

// Google reCaptcha Box wurde nicht angehakt
if(!$captcha){
  echo 'Bitte Google reCaptcha Checkbox aktivieren.
    <a style="display: block;" title="back" href="javascript:history.back(-2)">
      <button style="font-size: 1.2em;" type="button" name="erneut versuchen">erneut versuchen</button>
    </a>';
  exit;}

// Spamversuch wird geblockt, es wird keine eMail versendet
$secretKey = "*---SECRET KEY---";
$ip = $_SERVER['REMOTE_ADDR'];
$response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip);
$responseKeys = json_decode($response,true);
if(intval($responseKeys["success"]) !== 1) {
  echo 'Spamversuch!<br>Sorry die Nachricht wurde als Spam ausgewertet und somit nicht versendet.';}
else {
  // Zeitzone setzen
  $timezone = 'Europe/Berlin';
  date_default_timezone_set($timezone);
  
  // eMail Parameter
  $empfaenger = "*mail@deinedomaine.com";
  $betreff = "PHP Kontaktformular mit Google reCAPTCHA Spamschutz ".date("d.m.Y - H:i");
  $emailnachricht = "Name: ".$name."\r\ne-Mail: ".$email."\r\n\r\nNachricht: \r\n".$comment;
  $header = "From: kontaktformular <*mail@deinedomaine.com>";
  // eMail versenden
  mail($empfaenger, $betreff, $emailnachricht, $header);
  echo 'Besten Danke<br>Die Daten wurden erfolgreich übermittelt.';}
?>

*---SECRET KEY--- Muss durch den eigenen Google reCaptcha-Secret Key ersetzt werden.
Dieser Secret Key befindet sich im reCaptcha Menu unter dem Punkt 'Schritt 2: Serverseitige Integration' (aufklappen).
*mail@deinedomaine.com durch eine gültige eMail-Adresse vom Website-Server ersetzen.

reCaptcha

Code Beispiel ohne Javascript

Soll reCAPTCHA auch von Besuchern welche JavaScript im Browser deaktiviert haben verwendet werden können muss das obige Code Beispiel mit untenstehenden Code Zeilen ergänzt werden.

Codebeispiel ohne JavaScript
<noscript>
  <div style="width: 302px; height: 422px;">
    <div style="width: 302px; height: 422px; position: relative;">
      <div style="width: 302px; height: 422px; position: absolute;">
      <iframe src="https://www.google.com/recaptcha/api/fallback?k=your_site_key"
      frameborder="0" scrolling="no"
      style="width: 302px; height:422px; border-style: none;">
      </iframe>
    </div>
    <div style="width: 300px; height: 60px; border-style: none;
      bottom: 12px; left: 25px; margin: 0px; padding: 0px; right: 25px;
      background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px;">
      <textarea id="g-recaptcha-response" name="g-recaptcha-response"
        class="g-recaptcha-response"
        style="width: 250px; height: 40px; border: 1px solid #c1c1c1;
        margin: 10px 25px; padding: 0px; resize: none;" >
      </textarea>
    </div>
  </div>
  </div>
</noscript>

Code Beispiel (Download)

download Download
formular_example.zip


Enthaltene Dateien:
  • formular.php
  • auswertung.php



Kommentare
Hier können sowohl Fragen wie auch ein Feedback zum oben stehenden Artikel eingetragen werden.


*Name:


*Kommentar:

(max. 500 Zeichen)

Terms:


*Pflichtfeld

Hinweis:
Der Eintrag wird nach einer redaktionellen Prüfung in den kommenden Tagen freigeschalten.

Top Themen

Suche
DoubleTwist
doubletwist iTunes mit Android Handy synchronisieren
Free YouTube Video Music
Youtube gratis Musik für Youtube Videos
Anzeige
Spenden
ROG Innovation unterstützen