Ich habe mal einen eigenen Capacha gebaut der einfach ist , aber für Bots eigentlich nicht zu umgehen.Testet es mal selber.
<a href="downloads.php?download=eigenercapacha">Download-Archiv</a>
Code
<?php
$break = "<br/>";
$eol .= "\r\n";
$sol .= "\n";
if (isset($_POST['submitted'])) {
$errors = array();
if (empty($_POST['name'])) {
$errors[] = 'Please enter your name.';
}
// if (!preg_match("/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)*\.([a-zA-Z]{2,6})$/", $_POST['email'])) {
// $errors[] = 'Please enter a valid email address.';
// }
if (empty($_POST['msg'])) {
$errors[] = 'Please enter a message.';
}
if (empty($errors)) {
$siteName = 'Testmail Bastis1012 lösungspage';
$senderName = $_POST['name'];
$senderMail = $_POST['email'];
$url = $_POST['url'];
$headers .= 'Date: '.date("r").$eol;
$headers .= 'Sender-IP: '.$_SERVER["REMOTE_ADDR"].$eol;
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
$empfaenger = "peter1012@gmx.de";
$absender = $senderName;
$betreff = "Fehler melden $siteName ";
$antwortan = "basti1012@soforthilfe-forum.de";
$header .= "From: $absender\r\n";
$header .= "Reply-To: $antwortan\r\n";
$header .= "X-Mailer: PHP ". phpversion();
$msg .= '<font face=arial size=2>';
$msg .= '<strong>Absender:</strong> '.$senderName.$break;
$msg .= 'Sender-IP: '.$_SERVER["REMOTE_ADDR"].$break;
$msg .= 'Angegebene URL: '.$url.$break;
$msg .= 'Date: '.date("r").$break;
$msg .= '<strong>Message:</strong> '.$_POST['msg'].$break;
$msg .= '</font>';
echo '<div style="padding: 10px;">Thank you!<br><br>Your message has been received. </div></p>';
// echo '<meta http-equiv="refresh" content="3;url=email-versenden-funktionstuchtig.php">';
mail( $empfaenger,
$betreff,
$msg,
$header);
echo "<p class='ok'>Mail wurde gesendet<br><br>";
echo "$msg";
} else {
echo '<strong>Error!</strong><br/><br/>
The following error(s) occured.<br/>';
foreach ($errors as $message) {
echo " - $message<br/>\n";
}
// echo 'Please go <a href="javascript:history.go(-1)">back</a> and try again.</p>';
}
} else {
?>
<head>
<style>
header {
display: flex;
width: 100%;
height: 100px;
background: #4972a5;
color: white;
text-align: center;
border-radius: 0px 0 10px 10px;
}
header h1 {
margin-left: 10%;
}
body,
main {
width: 100%;
display: flex;
flex-direction: column;
flex-wrap: nowrap;
justify-content: center;
align-content: center;
align-items: center;
}
form {
position: absolute;
width: 100%;
top: 0;
left: 0;
}
#alless {
position: absolute;
top: 10px;
background: #123456;
width: 400px;
height: 600px;
border: 2px solid green;
display: none;
}
#wrapper {
position: relative;
top: 10px;
left: 50px;
z-index: 0;
width: 300px;
height: 300px;
border: 2px solid black;
}
#unten {
display: block;
width: 50px;
height: 50px;
position: relative;
z-index: -1;
border: 5px solid red;
top: 125px;
left: 125px;
}
.eins {
position: absolute;
z-index: 1;
top: 10px;
left: 10px;
width: 30px;
height: 30px;
border: 1px solid black;
background: yellow;
}
#bu,
#bu1 {
position: relative;
top: 20px;
display: none;
text-align: center;
}
#aus {
width: 100%;
display: flex;
flex-direction: row;
position: relative;
z-index: 3;
top: 40px;
text-align: center;
color: white;
font-weight: 900;
}
#bu p,
#bu1 p {
margin: 0;
text-align: center;
color: white;
font-weight: 900;
}
#aus span {
margin-left: 25px;
}
#XX {
position: relative;
top: 0px;
left: 0px;
font-size: 20px;
font-weight: 900;
color: white;
background: red;
height: 25px;
width: 21px;
cursor: pointer;
}
#XX:hover {
background: green;
color: red;
}
#senden {
position: relative;
left: -2000px;
}
.cap {
text-align: center;
color: white;
font-size: 22px;
}
.anleitung {
color: white;
text-align: center;
}
#cap,
#res,
#treffer {
background: #4972a5;
border-radius: 10px;
height: 35px;
color: white;
font-size: 20px;
width: 250px;
padding: 5px;
}
#cap:hover,
#res:hover,
#treffer:hover {
background: #66a6e6;
box-shadow: -1px -1px 13px 7px #66a6e6;
}
label {
width: 100%;
height: 20px;
text-align: center;
font-size: 18px;
}
.required,
#f2,
#f3 {
width: 100%;
height: 25px;
border-radius: 5px;
font-size: 20px;
margin-top: 10px;
margin-left: 20px;
}
.required:hover,
#f2:hover,
#f3:hover {
box-shadow: -1px -1px 13px 7px #66a6e6;
}
#buttons {
display: flex;
flex-direction: row;
width: 550px;
}
#f3 {
height: 150px;
}
input:focus::-webkit-input-placeholder,
textarea:focus::-webkit-input-placeholder {
color: black;
text-align: left;
}
input:focus:-moz-placeholder,
textarea:focus:-moz-placeholder {
color: black;
text-align: left;
}
</style>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
</head>
<body>
<form name="dwmailer" enctype="multipart/form-data" method="post">
<main>
<header><h1>Fehler melden,anregungen,oder einfach nur meckern</h1> </header>
<div class="error" style="display:none;">
<img src="https://www.dw-formmailer.de/images/error.png" alt="Error" style="height:24px; width:24px; float:left; margin: -5px 10px 0px 0px; "><p></p></div>
<label>Ihr Name: <font color="red">*</font></label>
<input class="required" value="" type="text" id="f0" name="name" placeholder="Hier Ihren Namen eintragen!">
<label>Ihre E-Mail: <font color="red">*</font></label>
<input class="required email" data-mini="true" data-clear-btn="true" type="email" id="f1" name="mail" placeholder="Hier Ihre E-Mail-Adresse eintragen!">
<label>Webseite mit dem Fehler (URL):</label>
<input type="text" id="f2" name="url" placeholder="Hier die URL der fehlerhaften Webseite eintragen!">
<label>Beschreibung des Fehlers (wichtig für die Korrektur):</label>
<textarea name="msg" id="f3" value="" placeholder="Hier bitte den Fehler beschreiben! Was geht nicht? Ist eine URL defekt? Ist ein Inhalt illegal? Wir freuen uns über jeden Fehler, den wir abstellen können!"></textarea>
<label>Zum Schutz vor Spamattacken muss das Rätsel vorm senden gelöst werden.<font color="red">*</font></label>
<div id="buttons"><input id="cap" type="button" value="Rätsel lösen fürs Senden"><input id="res" type="reset" value="Zurücksetzen"></div>
</main>
<input id="submi" type="hidden" name="submitted" value="TRUE" />
<input id="senden" type="submit" value="Abschicken">
</form>
<div id="alless"><div id="XX">X</div>
<h1 class="cap">Capatcha</h1>
<p class="anleitung">Bewegen Sie mit den Pfeiltasten den kleinen Kasten in den großen.</p>
<div id="wrapper">
<div id="unten"></div>
<div class="eins" id="wert1"></div>
</div>
<div id="bu1">
<p>Welche farbe hatte der kleine Kasten?</p>
<input type="text" class="frage" id="frage" placeholder="">
</div>
<div id="bu">
<input type="button" id="treffer" value="Nachricht Senden">
<p>Sie sind kein Roboter...weiter gehts</p>
</div>
<div id="aus">
<span id="xxx"> </span> <span id="yyy"</span>
</div>
</div>
</div>
<script>
var a=true;
var b=true;
var c=true;
$('#cap').click(function(){
ff0=$('#f0').val();
ff1=$('#f1').val();
ff3=$('#f3').val();
if(ff0 != ''){
a=false;
na=ff0+' Name ist Ok :) '
$('head').append('<style type="text/css">#f0{color:green;text-align:center;font-weight:600;}</style>');
$('#f0').attr('value',na);
}else{
$('head').append('<style type="text/css">#f0::-webkit-input-placeholder,#f0::-webkit-input-placeholder{color:red;text-align:center;font-weight:600;}</style>');
$('#f0').attr('placeholder','Bitte Namen eintragen').focus();
}
if(ff1 != ''){
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
function validate() {
var email = $("#f1").val();
if (validateEmail(email)) {
$('#f1').attr('placeholder',email+' is valid :)');
$('head').append('<style type="text/css">#f1{color:green;text-align:center;font-weight:600;}</style>');
} else {
$('#f1').attr('placeholder',''+email+'is not valid :(');
$('head').append('<style type="text/css">#f1{color:red;text-align:left;font-weight:600;}</style>');
}
return false;
}
validate();
b=false;
}else{
$('#f1').attr('placeholder','Bitte Ihre Email eintragen für Rückantwort').focus();
$('head').append('<style type="text/css">#f1::-webkit-input-placeholder,#f1::-webkit-input-placeholder{color:red;text-align:center;font-weight:600;}</style>');
}
if(ff3 != ''){
c=false;
te=ff3+' Text ist Ok :) '
$('head').append('<style type="text/css">#f3{color:green;text-align:center;font-weight:600;}</style>');
$('#f3').attr('value',te);
} else{
$('#f3').attr('placeholder','Bitte was schreiben sonst hat die Email ja kein sinn').focus();
$('head').append('<style type="text/css">#f3::-webkit-input-placeholder,#f3::-webkit-input-placeholder{color:red;text-align:center;font-weight:900;}</style>');
}
console.log(a+'-'+b+'-'+c)
if(a == false && b ==false && c==false){
gogo()
console.log('Capacha go');
}
})
function gogo(){
$('#XX').click(function(){
$('#alless').css('display','none');
})
$('#alless').css('display','block');
$('body').keydown(function(event){
var p1 = document.getElementById('wert1');
wertx=p1.offsetLeft;
werty=p1.offsetTop;
if(wertx<=3){
wertx=3;
}
if(wertx>=267){
wertx=267;
}
if(werty<=3){
werty=3;
}
if(werty>=267){
werty=267;
}
switch (event.keyCode) {
case 39:
move_left=-5;
$('#wert1').css('left',wertx-move_left+'px');
break;
case 38:
move_top=5
$('#wert1').css('top',werty-move_top+'px');
break;
case 37:
move_right=-5;
$('#wert1').css('left',wertx+move_right+'px');
break;
case 40:
move_bottom=5;
$('#wert1').css('top',werty+move_bottom+'px');
break;
}
var p = document.getElementById('wert1');
xx=p.offsetLeft;
yy=p.offsetTop;
if(xx < 127){
$('#xxx').css('color','white');
var xin=false;
$('#xxx').html('X'+xx)
}else if(xx > 145){
$('#xxx').css('color','white');
var xin=false;
$('#xxx').html('X'+xx)
}else{
$('#xxx').html('X-Achse erreict');
$('#xxx').css('color','green');
var xin=true;
}
if(yy < 127){
var yin=false;
$('#yyy').css('color','white');
$('#yyy').html('Y'+yy)
}else if(yy > 145){
$('#yyy').css('color','white');
var yin=false;
$('#yyy').html('Y'+yy)
}else{
$('#yyy').css('color','green');
$('#yyy').html('Y-Achse erreicht');
var yin=true;
}
if(yin==true && xin==true){
$('#frage').focus();
$('#unten,.eins').css('background','green');
$('#bu1').css('display','block');
$('#aus').css('display','none');
$('#bu').css('display','none');
$('body').keyup(function(event){
frag=$('#frage').val();
if(frag=='gelb' || frag=='yellow'){
$('#bu').css('display','block');
}else{
$('#bu').css('display','none');
}
});
}else{
$('.eins').css('background','yellow');
$('#bu,#bu1').css('display','none');
$('#unten').css('background','#123456');
$('#aus').css('display','block');
}
});
$('#treffer').click(function(){
$('#senden').click()
// location.reload();
})
}
</script>
<?php
}
?>