Hallo,
ich habe ab und zu Spams die mein Formularregeln durchbrechen zum einen habe ich bei der Formulareingabe die HTML5 pattern="^[A-Za-z]{3,10}$" benutzt und auch im JS wird der Vorname, Nachname und das Mail abgefragt ob da was eingegeben wurde das gleiche im PHP die das schlußendlich zu mir sendet.
Grundsätzlich funktioniert es ja auch, aber Spams kommen da irgendwie durch weil Sie beim Vornamen und Nachnamen das mit Zahlen befüllen obwohl ich nur Zeichen mit den pattern erlaubt habe!
Das verstehe ich nicht
Wie kann ich die Spams überlisten die Maileingabe müssen die ja auch richtig eintragen also wird die richtig überprüft und auch ausgefüllt...
Habe hier mal alle Dokumente eingefügt die zum Formular gehören eventuell gibt es ja eine einfache Lösung für mein Problem.
Ich weis nicht so recht wo ich da anfangen soll, weil ich habe 3 verschiedene Stellen an denen ich herumschrauben kann aber welche eignet sich dafür am besten.
Danke schon mal jetzt für Eure Hilfe!
Das HTML:
Das JS:
und das PHP:
ich habe ab und zu Spams die mein Formularregeln durchbrechen zum einen habe ich bei der Formulareingabe die HTML5 pattern="^[A-Za-z]{3,10}$" benutzt und auch im JS wird der Vorname, Nachname und das Mail abgefragt ob da was eingegeben wurde das gleiche im PHP die das schlußendlich zu mir sendet.
Grundsätzlich funktioniert es ja auch, aber Spams kommen da irgendwie durch weil Sie beim Vornamen und Nachnamen das mit Zahlen befüllen obwohl ich nur Zeichen mit den pattern erlaubt habe!
Das verstehe ich nicht
Wie kann ich die Spams überlisten die Maileingabe müssen die ja auch richtig eintragen also wird die richtig überprüft und auch ausgefüllt...
Habe hier mal alle Dokumente eingefügt die zum Formular gehören eventuell gibt es ja eine einfache Lösung für mein Problem.
Ich weis nicht so recht wo ich da anfangen soll, weil ich habe 3 verschiedene Stellen an denen ich herumschrauben kann aber welche eignet sich dafür am besten.
Danke schon mal jetzt für Eure Hilfe!
Das HTML:
PHP:
<div id="support">
<div id="slidecontent1">
<div class="supportheadline">Support</div>
<div class="support_aleart"><b>Der Support</b> startet in kürze!</div>
<div id="chat">
<a href="fileadmin/Resources/Private/rc-chat/">
<img src="fileadmin/Resources/Public/Images/livechat1.jpg" alt="Chat Live Support" title="Chat Live Support"/>
</a>
</div>
<div id="modalDiv">
<iframe id="modalIFrame" title="Dialog Title"></iframe>
</div>
<form id='supportmail' method='post' action='fileadmin/Resources/Public/JavaScript/process.php'>
<dl>
<dd><input id='sender_vorname_chat' class="text" type="text" name="vorname" required="required" pattern="^[A-Za-z]{3,10}$" placeholder="Vorname" /></dd>
<dd><input id='sender_nachname_chat' class="text" type="text" name="nachname" required="required" pattern="^[A-Za-z]{3,10}$" placeholder="Nachname" /></dd>
<dd><input id='sender_mail_chat' class="text" type="text" name="email" required="required" pattern="[^@]+@[^@]+\.[a-zA-Z]{2,6}" placeholder="E-Mail" /></dd>
<dd><input type='submit' class='absende_button_chat' value='Anmelden' />
<div class="loading"></div>
</dd>
</dl>
</form>
</div>
</div>
Das JS:
PHP:
/************** JS Ajax mit PHP send Mail *********************/
$(document).ready(function () {
placeholder = ['Vorname', 'Nachname', 'E-Mail'];
//var Input = $('input[type!="submit"]');
var Input = $('#supportmail').find('input[type!="submit"]');
trim = function (str) {
return str.replace(/^\s+/, '').replace(/\s+$/, '');
};
Input.each(function (i) {
$(this).val(placeholder[i]).data('placeholder', placeholder[i]);
});
Input.focus(function () {
var element = $(this);
if (trim(element.val()) == element.data('placeholder')) {
$(this).val('');
}
});
Input.blur(function () {
var element = $(this);
if (trim(element.val()) == '') {
element.val(element.data('placeholder'));
}
});
// Wenn der Absende Button geklickt wird
$('#supportmail').submit(function (e) {
var failed = 0;
$('input[required="required"]').each(function () {
var element = $(this);
var value = element.val();
var pattern = element.attr('pattern');
var regex = new RegExp(pattern);
var result = regex.exec(value);
if (result === null || result == element.data('placeholder')) {
failed = 1;
element.css('border-color', 'red');
} else {
element.css('border-color', 'green');
}
});
if (failed > 0) {
e.preventDefault();
alert('Bitte füllen Sie das Formular richtig aus...');
} else {
e.preventDefault();
var data = $('#supportmail').serialize();
//$('.text').attr('enabled','false');
// Supportmail Formular ausblenden
//$('#supportmail').fadeOut('slow');
// Nachricht anzeigen
//$('.support_aleart').fadeIn('slow');
$('.loading').show();
$.ajax({
// Url zum verarbeiteten PHP File
beforeSend: function () {
//alert(data);
},
url: "fileadmin/Resources/Public/JavaScript/process.php",
// GET Methode benutzen
type: "GET",
// Abfrage mit data
data: data,
// Die Page nicht cashen
cache: false,
//success
datatype: 'html',
error: function() {
//alert('failed');
},
success: function (html) {
//alert(html);
// Wenn die PHP Datei 1 zurückgibt also richtig das Mail senden
// Wenn die PHP Datei 0 zurückgibt also falsch das Mail nicht senden und den Fehler ausgeben
if (html == 1) {
// Supportmail Formular ausblenden
$('#supportmail').fadeOut('slow');
// Nachricht anzeigen
$('.support_aleart').fadeIn('slow');
// Plungi für Starter Chat
$.fn.delay = function( time, name ) {
return this.queue( ( name || "fx" ), function() {
var self = this;
setTimeout(function() {
$.dequeue(self);
} , time );
});
};
$('.support_aleart').delay(3000).fadeOut('slow');
// Starter Chat
$('#chat').delay(5000).fadeIn('slow');
//$('.support_aleart').fadeOut('slow');
$('#modalDiv').dialog({
modal: false,
autoOpen: false,
height: 800,
width: 540,
draggable: true,
resizeable: true,
title: 'Live Support',
close: function( event, ui ) {
$('#modalIFrame').attr('src', '');
$('#supportmail').show();
}
});
// Automatische Weiterleitung mit .trigger('click');
$('#chat').click(function(e) {
e.preventDefault();
$(this).delay(5000).fadeOut('slow');
url = 'fileadmin/Resources/Private/chat/';
$('#modalDiv').dialog('open');
$('#modalIFrame').attr('src', url);
}).trigger('click');
} else {
alert('Es ist ein unerwarteter Fehler ist aufgetreten, bitte versuchen Sie es später noch einmal.');
}
}
});
}
}); // supportmail ende
}); // ready end
und das PHP:
PHP:
<?php
//Retrieve form data.
//GET - user submitted data using AJAX
//POST - in case user does not support javascript, we'll use POST instead
$vorname = ($_GET['vorname']) ? $_GET['vorname'] : $_POST['vorname'];
$nachname = ($_GET['nachname']) ? $_GET['nachname'] : $_POST['nachname'];
$email = ($_GET['email']) ?$_GET['email'] : $_POST['email'];
//flag to indicate which method it uses. If POST set it to 1
if ($_POST) $post = 1;
//Simple server side validation for POST data, of course, you should validate the email
if (!$vorname) $errors[count($errors)] = 'Geben Sie bitte Ihren Vornamen ein';
if (!$nachname) $errors[count($errors)] = 'Geben Sie bitte Ihren Nachnamen ein';
if (!$email) $errors[count($errors)] = 'Geben Sie bitte Ihre Mailadresse ein';
//if the errors array is empty, send the mail / no errors found
if (!$errors) {
//recipient
$to = 'admin@support.com';
//sender
$from = $vorname .' '. $nachname . ' <' . $email . '>';
//subject and the html message
$subject = 'Chat Anmeldung';
$message = '
<!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></head>
<body>
<table>
<tr><td>Vorname</td><td>' . $vorname . '</td></tr>
<tr><td>Nachname</td><td>' . $nachname . '</td></tr>
<tr><td>Email</td><td>' . $email . '</td></tr>
</table>
<p>Bitte Log Dich in den Chat ein<br />
Ein User wartet auf Deine Antwort im Chat<br />
<a href="fileadmin/Resources/Private/chat/">Chat LogIn</a>
</body>
</html>';
//send the mail
$result = sendmail($to, $subject, $message, $from);
//if POST was used, display the message straight away
if ($_POST) {
echo 'Die Freischaltung wird aktiviert!';
//This one for ajax
//1 means success, 0 means failed
} else {
echo '1';
}
} else {
//display the errors message
for ($i=0; $i<count($errors); $i++) echo $errors[$i] . '<br/>';
echo '<a href="http://www.url.com">Back</a>';
exit;
}
//Simple mail function with HTML header
function sendmail($to, $subject, $message, $from) {
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= 'From: ' . $from . "\r\n";
$result = mail($to,$subject,$message,$headers);
if ($result) return 1;
else return 0;
}
?>