muli
71693e8640
Die URL ist noch hardcoded. Rückmeldung für den User fehlt noch. Die Nachricht geht noch nirgends hin. Spamprotection ohne Captcha ist nur in Ansätzen zu erkennen.
78 lines
2.3 KiB
PHP
78 lines
2.3 KiB
PHP
<?php
|
|
$message = '';
|
|
$name = '';
|
|
$email = '';
|
|
|
|
function sanitize_text(string $name) {
|
|
$text = filter_var($_POST[$name], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
|
|
$text = trim($text);
|
|
$text = stripslashes($text);
|
|
$text = htmlspecialchars($text);
|
|
|
|
return $text;
|
|
}
|
|
|
|
/**
|
|
* Sending email (Platzhalter)
|
|
*
|
|
* mail(): Braucht auf dem Server einen korrekt konfigurierten Mailserver
|
|
* phpmailer: Bibliothek, der per Composer installiert wird. Tut ganz gut mit SMTP.
|
|
*/
|
|
function send_message_to_office($message, $name, $email) {
|
|
return true;
|
|
}
|
|
|
|
function send_response($response_data) {
|
|
$json = json_encode($response_data);
|
|
if ($json === false) {
|
|
// Avoid echo of empty string (which is invalid JSON), and
|
|
// JSONify the error message instead:
|
|
$json = json_encode(["jsonError" => json_last_error_msg()]);
|
|
if ($json === false) {
|
|
// This should not happen, but …
|
|
$json = '{"jsonError":"unknown"}';
|
|
}
|
|
// Set HTTP response status code to: 500 - Internal Server Error
|
|
http_response_code(500);
|
|
}
|
|
header('Content-type: application/json');
|
|
echo $json;
|
|
}
|
|
|
|
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
|
$response = array();
|
|
|
|
if (
|
|
empty($_POST['message']) ||
|
|
empty($_POST['email']) ||
|
|
empty($_POST['name']) ||
|
|
$_POST['captcha'] != 'Nudelsuppe'
|
|
) {
|
|
if (empty($_POST['message'])) {
|
|
$response['errors'][] = 'Du hast keine Nachricht eingegeben.';
|
|
}
|
|
if (empty($_POST['email'])) {
|
|
$response['errors'][] = 'Du hast keine E-Mail-Adresse eingegeben.';
|
|
}
|
|
if (empty($_POST['name'])) {
|
|
$response['errors'][] = 'Du hast keinen Namen eingegeben.';
|
|
}
|
|
if ($_POST['captcha'] != 'Nudelsuppe') {
|
|
$response['errors'][] = 'Wir glauben du bist ein Bot.';
|
|
}
|
|
} else {
|
|
$message = sanitize_text('message');
|
|
$name = sanitize_text('name');
|
|
$email = sanitize_text('email');
|
|
|
|
if (!send_message_to_office($message, $name, $email)) {
|
|
$response['errors'][] = 'Deine Nachricht konnte nicht übermittelt werden.';
|
|
} else {
|
|
$response['status'] = 'ok';
|
|
}
|
|
}
|
|
send_response($response);
|
|
} else {
|
|
http_response_code(404);
|
|
}
|