fixed Boterkennung durch Zeit.
Formular Zusatzmodule Freiberufler hinzugefügt. message.php constructMessage() erweitert, so dass für alle Formulare nur diese eine Methode benötigt wird.
This commit is contained in:
parent
7a9bcaaef8
commit
022802a9a5
3 changed files with 251 additions and 0 deletions
109
public/php/ajaxmail.php
Normal file
109
public/php/ajaxmail.php
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
<?php
|
||||
header('Access-Control-Allow-Origin: *'); // Allow access from any origin
|
||||
header('Content-Type: application/json'); // Set the response content type to JSON
|
||||
header('Access-Control-Allow-Methods: POST'); // Allow only POST requests
|
||||
|
||||
require '../vendor/autoload.php'; // Adjust the path to Composer autoload.php
|
||||
require 'message.php'; // Include the message.php file
|
||||
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
|
||||
$mail = new PHPMailer(true);
|
||||
mb_internal_encoding("UTF-8");
|
||||
|
||||
try {
|
||||
// Receive and validate input data using filter_input()
|
||||
$name = strip_tags(trim(filter_input(INPUT_POST, 'name') . ' ' . filter_input(INPUT_POST, 'vorname'))); // Add filter_input(INPUT_POST, 'nachname') to $name
|
||||
|
||||
$email = filter_var(trim(filter_input(INPUT_POST, 'email')), FILTER_SANITIZE_EMAIL);
|
||||
$subject = strip_tags(trim(filter_input(INPUT_POST, 'formularart')));
|
||||
// Construct the message using the function from message.php
|
||||
$message = constructMessage();
|
||||
|
||||
$bot = false;
|
||||
|
||||
if (!empty(filter_input(INPUT_POST, 'verify_email'))) {
|
||||
// Es handelt sich wahrscheinlich um einen Bot
|
||||
$bot = true;
|
||||
}
|
||||
|
||||
// Überprüfe die Zeit, die für das Ausfüllen des Formulars benötigt wurde
|
||||
$timeSpent = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_FLOAT);
|
||||
|
||||
// Setze plausiblen Mindestwert für die Zeit auf der Seite
|
||||
$minimumTime = 5.0;
|
||||
|
||||
if ($timeSpent !== null && $timeSpent < $minimumTime) {
|
||||
$subject = '$time: ' . $timeSpent . ' ' . $subject;
|
||||
$bot = true;
|
||||
}
|
||||
|
||||
// Überprüfe, ob der Nutzer mit der Seite interagiert hat
|
||||
$userInteracted = filter_input(INPUT_POST, 'userInteracted');
|
||||
|
||||
if ($userInteracted === 'false') {
|
||||
$subject = '$userInteracted: ' . $userInteracted . ' ' . $subject;
|
||||
$bot = true;
|
||||
}
|
||||
|
||||
if ($bot) {
|
||||
// Es handelt sich wahrscheinlich um einen Bot
|
||||
$subject = 'Botverdacht - ' . $subject;
|
||||
}
|
||||
|
||||
if (empty($name) || !filter_var($email, FILTER_VALIDATE_EMAIL) || empty($message)) {
|
||||
// Invalid input
|
||||
throw new Exception('Ungültige Eingabedaten.');
|
||||
}
|
||||
|
||||
// Server settings
|
||||
//$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Enable this for detailed debugging
|
||||
$mail->isSMTP(); // Use SMTP
|
||||
$mail->Host = 'sslout.de'; // Set SMTP server
|
||||
$mail->SMTPAuth = true; // Enable SMTP authentication
|
||||
$mail->Username = 'ah@mediendesign-hnida.de'; // SMTP username
|
||||
$mail->Password = 'jrd9h7RnVjf/'; // SMTP password
|
||||
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // Enable encryption
|
||||
$mail->Port = 465; // TCP port for the connection
|
||||
|
||||
// Recipients
|
||||
$mail->setFrom($email, $name); // Sender address
|
||||
$mail->addAddress('ah@mediendesign-hnida.de', 'Andreas Hnida'); // Add recipient
|
||||
$mail->addReplyTo($email, $name); // Set reply address
|
||||
$mail->addBCC('ah@mediendesign-hnida.de'); // Add bounce email address as BCC
|
||||
|
||||
// Content
|
||||
$mail->isHTML(true); // Email in HTML format
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$encodedSubject = mb_encode_mimeheader($subject, "UTF-8", "Q");
|
||||
$mail->Subject = $encodedSubject;
|
||||
$mail->Body = nl2br(htmlspecialchars($message));
|
||||
$mail->AltBody = htmlspecialchars($message);
|
||||
|
||||
// Send email
|
||||
if ($mail->send()) {
|
||||
// Success response
|
||||
echo json_encode(['success' => true, 'message' => 'Nachricht wurde gesendet.']);
|
||||
http_response_code(200);
|
||||
|
||||
// Send a second email to the customer
|
||||
$customerEmail = $email;
|
||||
$customerSubject = 'Danke für Ihre Bestellung - Verua RaBe Websolutions';
|
||||
$encodedSubject = mb_encode_mimeheader($customerSubject, "UTF-8", "Q");
|
||||
|
||||
$customerMessage = constructCustomerMessageDE($message);
|
||||
|
||||
$mail->clearAddresses();
|
||||
$mail->addAddress($customerEmail);
|
||||
$mail->Subject = $encodedSubject;
|
||||
$mail->Body = nl2br(htmlspecialchars($customerMessage));
|
||||
$mail->AltBody = htmlspecialchars($customerMessage);
|
||||
|
||||
$mail->send();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
// Error response if an exception occurs
|
||||
echo json_encode(['success' => false, 'message' => "Nachricht konnte nicht gesendet werden. Mailer Error: {$mail->ErrorInfo}"]);
|
||||
}
|
||||
?>
|
||||
47
public/php/mail.php
Normal file
47
public/php/mail.php
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
|
||||
require 'vendor/autoload.php'; // Pfad zum Composer autoload.php anpassen
|
||||
|
||||
$mail = new PHPMailer(true);
|
||||
|
||||
try {
|
||||
// Eingabedaten empfangen und validieren
|
||||
$name = strip_tags(trim($_POST['name']));
|
||||
$email = filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL);
|
||||
$message = trim($_POST['message']);
|
||||
|
||||
if (empty($name) || !filter_var($email, FILTER_VALIDATE_EMAIL) || empty($message)) {
|
||||
// Ungültige Eingabe
|
||||
throw new Exception('Ungültige Eingabedaten.');
|
||||
}
|
||||
|
||||
// Servereinstellungen
|
||||
//$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Aktivieren Sie dies für detailliertes Debugging
|
||||
$mail->isSMTP(); // SMTP verwenden
|
||||
$mail->Host = 'sslout.de'; // SMTP-Server setzen
|
||||
$mail->SMTPAuth = true; // SMTP-Authentifizierung aktivieren
|
||||
$mail->Username = 'ah@mediendesign-hnida.de'; // SMTP-Benutzernamen angeben
|
||||
$mail->Password = 'jrd9h7RnVjf/'; // SMTP-Passwort angeben
|
||||
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // Verschlüsselung aktivieren
|
||||
$mail->Port = 465; // TCP-Port für die Verbindung
|
||||
|
||||
// Empfänger
|
||||
$mail->setFrom($email, $name); // Absenderadresse
|
||||
$mail->addAddress('ah@mediendesign-hnida.de', 'Andreas Hnida'); // Empfänger hinzufügen
|
||||
$mail->addReplyTo($email, $name); // Antwortadresse setzen
|
||||
$mail->addBCC('ah@mediendesign-hnida.de'); // Bounce-E-Mail-Adresse als BCC hinzufügen
|
||||
|
||||
// Inhalt
|
||||
$mail->isHTML(true); // E-Mail im HTML-Format
|
||||
$mail->Subject = 'Neue Nachricht vom Bestellformular der Website';
|
||||
$mail->Body = nl2br(htmlspecialchars($message));
|
||||
$mail->AltBody = htmlspecialchars($message);
|
||||
|
||||
$mail->send();
|
||||
echo 'Nachricht wurde gesendet';
|
||||
} catch (Exception $e) {
|
||||
echo "Nachricht konnte nicht gesendet werden. Fehler: {$mail->ErrorInfo}";
|
||||
}
|
||||
?>
|
||||
95
public/php/message.php
Normal file
95
public/php/message.php
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
<?php
|
||||
header('Access-Control-Allow-Origin: *'); // Erlaubt Zugriffe von jedem Ursprung
|
||||
header('Content-Type: application/json'); // Setzt den Content-Type der Antwort auf JSON
|
||||
|
||||
function constructMessage() {
|
||||
$message = "Formular: " . "\n" . filter_input(INPUT_POST, 'formularart') . "\n\n\n\n";
|
||||
$message .= "Geschlecht: " . "\n" . filter_input(INPUT_POST, 'gender') . "\n\n";
|
||||
$message .= "Sprache: " . "\n" . filter_input(INPUT_POST, 'sprache') . "\n\n";
|
||||
$message .= "Nachname: " . "\n" . filter_input(INPUT_POST, 'name') . "\n\n";
|
||||
$message .= "Vorname: " . "\n" . filter_input(INPUT_POST, 'vorname') . "\n\n";
|
||||
$message .= "Strasse: " . "\n" . filter_input(INPUT_POST, 'strasse') . "\n\n";
|
||||
$message .= "PLZ Ort: " . "\n" . filter_input(INPUT_POST, 'plz_ort') . "\n\n";
|
||||
$message .= "Telefon: " . "\n" . filter_input(INPUT_POST, 'telefon') . "\n\n";
|
||||
$message .= "Email: " . "\n" . filter_input(INPUT_POST, 'email') . "\n\n";
|
||||
$message .= "ZSR Nummer: " . "\n" . filter_input(INPUT_POST, 'zsr_nummer') . "\n\n";
|
||||
$bestehend = filter_input(INPUT_POST, 'bestehend');
|
||||
|
||||
// Form inputs von Erstbestellung
|
||||
if (isset($bestehend)) {
|
||||
$message .= "Wünschen Sie einen neuer Server oder den Zugang zu einem bestehenden Team-Server?: " . "\n" . $bestehend . "\n\n";
|
||||
}
|
||||
|
||||
$servername = filter_input(INPUT_POST, 'servername');
|
||||
if (isset($servername)) {
|
||||
$message .= "Bitte geben Sie den Namen des Servers an. Der Zugriff erfolgt immer über die Web-Adresse: https://wunschname.verua.ch: " . "\n" . $servername . "\n\n";
|
||||
}
|
||||
|
||||
$modulpop2 = filter_input(INPUT_POST, 'modulpop2');
|
||||
if (isset($modulpop2)) {
|
||||
$message .= "Wünschen Sie die Erweiterung um das Modul POP2?: " . "\n" . $modulpop2 . "\n\n";
|
||||
}
|
||||
|
||||
$materialverwaltung = filter_input(INPUT_POST, 'materialverwaltung');
|
||||
if (isset($materialverwaltung)) {
|
||||
$message .= "Benötigen Sie das Zusatzmodul Materialverwaltung?: " . "\n" . $materialverwaltung . "\n\n";
|
||||
}
|
||||
|
||||
$qrcode = filter_input(INPUT_POST, 'qrcode');
|
||||
if (isset($qrcode)) {
|
||||
$message .= "Wünschen Sie die Erweiterung um das Modul QR-Code?: " . "\n" . $qrcode . "\n\n";
|
||||
}
|
||||
|
||||
$wochenbett = filter_input(INPUT_POST, 'wochenbett');
|
||||
if (isset($wochenbett)) {
|
||||
$message .= "Benötigen Sie das Programm für Wochenbett-Betreuung?: " . "\n" . $wochenbett . "\n\n";
|
||||
}
|
||||
$anmerkung = filter_input(INPUT_POST, 'anmerkung');
|
||||
if (!empty($anmerkung)) {
|
||||
$message .= "Anmerkung: " . "\n" . $anmerkung . "\n\n";
|
||||
}
|
||||
|
||||
// Form inputs von Zusatzmodule
|
||||
$zusatzmodulPop2 = filter_input(INPUT_POST, 'zusatzmodul-pop2');
|
||||
if (isset($zusatzmodulPop2)) {
|
||||
$message .= "Zusatzmodul POP2" . "\n";
|
||||
}
|
||||
|
||||
$zusatzmodulMaterialverwaltung = filter_input(INPUT_POST, 'zusatzmodul-materialverwaltung');
|
||||
if (isset($zusatzmodulMaterialverwaltung)) {
|
||||
$message .= "Zusatzmodul Materialverwaltung" . "\n";
|
||||
}
|
||||
|
||||
$zusatzmodulQrCode = filter_input(INPUT_POST, 'zusatzmodul-qr-code');
|
||||
if (isset($zusatzmodulQrCode)) {
|
||||
$message .= "Zusatzmodul QR-Code" . "\n";
|
||||
}
|
||||
|
||||
$zusatzmodulPerigon = filter_input(INPUT_POST, 'zusatzmodul-perigon');
|
||||
if (isset($zusatzmodulPerigon)) {
|
||||
$message .= "Zusatzmodul Perigon" . "\n";
|
||||
}
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
function constructCustomerMessageDE($bestellMessage) {
|
||||
$message = "Sehr geehrte Damen und Herren" . "\n";
|
||||
$message .= "Vielen Dank für Ihre Bestellung. Wir werden uns so schnell wie möglich bei Ihnen melden." . "\n\n";
|
||||
$message .= "Freundliche Grüsse" . "\n";
|
||||
$message .= "Ihr Verua Team" . "\n";
|
||||
$message .= "RaBe Websolutions" . "\n";
|
||||
$message .= "B. Rasberger" . "\n";
|
||||
$message .= "Hauptstrasse 1" . "\n";
|
||||
$message .= "CH-4417 Ziefen" . "\n\n";
|
||||
$message .= "Telefon: +41 61 901 90 90" . "\n";
|
||||
$message .= "E-Mail: support@verua.ch" . "\n";
|
||||
$message .= "Web: www.verua.ch" . "\n\n";
|
||||
|
||||
$message .= "------------------------------------------------------------" . "\n\n";
|
||||
$message .= "Hier noch einmal Ihre Angaben für Sie zur Überprüfung. Sollten Sie noch einen Fehler finden, informieren Sie uns bitte:" . "\n\n";
|
||||
|
||||
$message .= $bestellMessage;
|
||||
|
||||
return $message;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue