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'])) { $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.'; } /** * Idee zur Bot-Erkennung: * 1. Ein Bot hat das Pseudocaptcha entweder leer abgeschickt, oder sich selbst etwas ausgedacht. * 2. Ein Bot schickt die Daten in unter 5s ab. * 3. Ein Mensch braucht nicht länger als 60min. */ if ( $_POST['captcha'] != 'Nudelsuppe' or preg_match('/\d{10}/', $_POST['time_sent']) != 1 or time() - intval($_POST['time_sent']) < 5 or time() - intval($_POST['time_sent']) > 3600 ) { $response['errors'][] = 'Wir glauben du bist ein Bot.'; } if (!array_key_exists('errors', $response)) { $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); }