Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Formular Spamschutz und Validierung
<?php
$errors = array();
//Prüfen ob Formular abgesendet
if(isset($_POST['submit'])) {
//Spamcheck mit jedem neuem Absenden zurücksetzen
$spamcheck = false;
//Spamcheck
if(!isset($_POST["repeat_email"]) || !empty($_POST["repeat_email"]) || isset($_POST["terms"])) {
$errors[] = "Zusatzfelder wurden ausgefüllt, wir vermuten Spam und brechen hier ab.";
} else {
$spamcheck = true;
}
// Eingaben Validieren
if($spamcheck == true) {
if(empty($_POST['name'])) { //Wenn Name leer
$errors[] = "Bitte geben Sie Ihren Namen an";
}
if(empty($_POST['email'])){ //Wenn Email leer
$errors[] = "Bitte Emailadresse angeben";
} elseif (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) == false) { //Emailformat überprüfen ab PHP 5.2
$errors[] = "Bitte geben Sie ein gültige Emailadresse an";
}
if(empty($_POST['message'])){ //Wenn Nachricht leer
$errors[] = "Bitte geben Sie Ihre Nachricht ein";
}
if(!isset($_POST["gender"])){ //Wenn Spamcheck nicht markiert
$errors[] = "Bitte bestätigen Sie den Spamcheck";
}
}
if(isset($_POST['submit']) && empty($errors) && $spamcheck == true) {
// Spamtest bestanden, alle erforderlichen Felder richtig ausgefüllt
// Eintrag in Datenbank oder Email Versand
echo "Alles richtig gemacht";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Tutorial: PHP Formular Spamschutz und Validierung – Spam Emails verhindern auch ohne Captcha</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://codeorigin.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.terms').append('<input type="text" name="repeat_email" />');
});
</script>
<style>
/*Demo Formular Styles*/
label { display:inline-block; width:100px; }
input { padding:5px; width:300px; }
input[type="checkbox"] { width:20px; margin-right:10px; }
textarea { width:410px; }
.terms { display:none; }
</style>
</head>
<body>
<h2>Demo: PHP Formular Spamschutz und Spamabwehr ohne Captcha</h2>
<p><a href="http://sevenx.de/blog/php-formular-spamschutz-und-validierung-spam-emails-verhindern-auch-ohne-captcha">Zum Blogartikel &raquo; sevenX.de</a></p>
<noscript>Bitte aktivieren Sie Javascript zum Absenden des Formulars oder nutzen Sie eine der alternative Kontaktmöglichkeiten unter www.domain.de/kontakt.htm</noscript>
<?php if(isset($_POST['submit']) && empty($errors) == false) {?>
<div style="background:#FCC">
<strong>Bitte überprüfen Sie Ihre Angaben!</strong><br />
<?php echo '<ul><li>'.implode('</li><li>',$errors).'</li></ul>'; ?>
</div>
<?php } ?>
<form id="phpform" method="post" action="formular-spamschutz.php" autocomplete="off">
<p><label for="name">Name<span>*</span></label>
<input type="text" name="name" value="<?=(isset($_POST['name'])) ? $_POST['name'] :''?>"></p>
<p><label for="email">Email<span>*</span></label>
<input type="text" name="email" value="<?=(isset($_POST['email'])) ? $_POST['email'] :''?>"></p>
<p><label for="message">Nachricht<span>*</span></label><br />
<textarea name="message" rows="8"><?=(isset($_POST['message'])) ? $_POST['message'] :''?></textarea></p>
<p><input type="checkbox" name="gender" <?=(isset($_POST['human'])) ? "checked='checked'" : ''?>><span>*</span> Ich versende keinen Spam</p>
<p><input type="submit" name="submit" value="Absenden"></p>
<div class="terms">
Folgende Felder bitte frei lassen!
<input type="checkbox" name="terms">
</div>
</form>
<p><a href="http://sevenx.de/" target="_blank">Made with love from sevenX.de - Rico Loschke</a></p>
</body>
</html>
<?php
$errors = array();
//Prüfen ob Formular abgesendet
if(isset($_POST['submit'])) {
$spamcheck = false;
//Spamcheck
if(!isset($_POST["repeat_email"]) || !empty($_POST["repeat_email"]) || isset($_POST["terms"])) {
$errors[] = "Zusatzfelder wurden ausgefüllt, wir vermuten Spam und brechen hier ab.";
} else {
$spamcheck = true;
}
// Eingaben Validieren
if($spamcheck == true) {
if(empty($_POST['name'])) { //Wenn Name leer
$errors[] = "Bitte geben Sie Ihren Namen an";
}
if (!empty($_POST['phone']) && is_numeric($_POST['phone']) == false) { //Wenn Feld nicht leer, dann auf nur Ziffern prüfen
$errors[] = "Telefonnummer bitte nur mit Ziffern angeben";
}
if(empty($_POST['email'])){ //Wenn Email leer
$errors[] = "Bitte Emailadresse angeben";
} elseif (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) == false) { //Emailformat überprüfen ab PHP 5.2
$errors[] = "Bitte geben Sie ein gültige Emailadresse an";
}
if (!empty($_POST['url']) && filter_var($_POST['url'], FILTER_VALIDATE_URL) == false) { //Wenn Feld nicht leer dann URL überprüfen ab PHP 5.2
$errors[] = "Bitte gültige URL angeben, inkl. http://";
}
if (!empty($_POST['plz']) && !preg_match("/^[0-9]{5}$/", $_POST['plz'])) { //PLZ mit preg_match Prüfung
$errors[] = "Bitte gültige Postleitzahl angeben";
}
if(empty($_POST['message'])){ //Wenn Nachricht leer
$errors[] = "Bitte geben Sie Ihre Nachricht ein";
}
if(!isset($_POST["gender"])){ //Wenn Spamcheck nicht markiert
$errors[] = "Bitte bestätigen Sie den Spamcheck";
}
}
if(isset($_POST['send']) && empty($errors) && $spamcheck == true) {
//Formular weiter verarbeiten
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Tutorial: PHP Formular Spamschutz und Validierung – Spam Emails verhindern auch ohne Captcha</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://codeorigin.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.terms').append('<input type="text" name="repeat_email" />');
});
</script>
<style>
/*Demo Formular Styles*/
label { display:inline-block; width:100px; }
input { padding:5px; width:300px; }
input[name="plz"] { width:60px; }
input[name="city"] { width:222px; }
input[type="submit"] { width:160px; background:#09F; }
input[type="checkbox"] { width:20px; margin-right:10px; }
textarea { width:410px; }
span { color: #c00; }
.terms{ display:none; }
</style>
</head>
<body>
<h2>Demo: PHP Formular Spamschutz und Spamabwehr ohne Captcha</h2>
<p><a href="http://sevenx.de/blog/php-formular-spamschutz-und-validierung-spam-emails-verhindern-auch-ohne-captcha">Zum Blogartikel &raquo; sevenX.de</a></p>
<noscript>Bitte aktivieren Sie Javascript zum Absenden des Formulars oder nutzen Sie eine der alternative Kontaktmöglichkeiten unter www.domain.de/kontakt.htm</noscript>
<?php if(isset($_POST['submit']) && empty($errors) == false) {?>
<div style="background:#FCC">
<strong>Bitte überprüfen Sie Ihre Angaben!</strong><br />
<?php echo '<ul><li>'.implode('</li><li>',$errors).'</li></ul>'; ?>
</div>
<?php } ?>
<form id="phpform" method="post" action="basic-form.php" autocomplete="off">
<p><label for="name">Name<span>*</span></label>
<input type="text" name="name" value="<?=(isset($_POST['name'])) ? $_POST['name'] :''?>"></p>
<p><label for="phone">Telefon</label>
<input type="text" name="phone" value="<?=(isset($_POST['phone'])) ? $_POST['phone'] :''?>"></p>
<p><label for="email">Email<span>*</span></label>
<input type="text" name="email" value="<?=(isset($_POST['email'])) ? $_POST['email'] :''?>"></p>
<p><label for="url">Website</label>
<input type="text" name="url" value="<?=(isset($_POST['url'])) ? $_POST['url'] :''?>"></p>
<p><label for="street">Straße</label>
<input type="text" name="street" value="<?=(isset($_POST['street'])) ? $_POST['street'] :''?>"></p>
<p><label for="plz">PLZ/Stadt</label>
<input type="text" name="plz" value="<?=(isset($_POST['plz'])) ? $_POST['plz'] :''?>">
<input type="text" name="city" value="<?=(isset($_POST['city'])) ? $_POST['city'] :''?>"></p>
<p><label for="subject">Betreff</label>
<input type="text" name="subject" value="<?=(isset($_POST['subject'])) ? $_POST['subject'] :''?>"></p>
<p><label for="message">Nachricht<span>*</span></label><br />
<textarea name="message" rows="8"><?=(isset($_POST['message'])) ? $_POST['message'] :''?></textarea></p>
<p><input type="checkbox" name="gender" <?=(isset($_POST['gender'])) ? "checked='checked'" : ''?>><span>*</span> Ich versende keinen Spam</p>
<p><input type="submit" name="submit" value="Absenden"></p>
<div class="terms">
Folgende Felder bitte frei lassen!
<input type="checkbox" name="terms">
</div>
</form>
<span>*</span>Pflichtangaben
<p><a href="http://sevenx.de/" target="_blank">Made with love from sevenX.de - Rico Loschke</a></p>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.