<?php
/**
 * MDA Group - Verwerking contactformulier
 *
 * Plaats dit in een plugin voor codesnippets (bv. WPCode / Code Snippets, type "PHP Snippet",
 * overal uitvoeren) of in functions.php van het child theme. Laat de openingstag <?php weg
 * als uw snippetplugin die zelf toevoegt.
 *
 * Ontvanger: websitecontact@mdagroup.eu
 */

if ( ! defined( 'ABSPATH' ) ) { exit; }

add_action( 'wp_ajax_mda_contact',        'mda_contact_verwerk' );
add_action( 'wp_ajax_nopriv_mda_contact', 'mda_contact_verwerk' );

function mda_contact_verwerk() {

	$fout = function ( $bericht, $code = 400 ) {
		wp_send_json_error( array( 'message' => $bericht ), $code );
	};

	// 1. Spamfilters: honeypot en minimale invultijd (3 sec).
	if ( ! empty( $_POST['website'] ) ) {
		wp_send_json_success(); // doen alsof het gelukt is
	}
	if ( isset( $_POST['elapsed'] ) && (int) $_POST['elapsed'] < 3000 ) {
		$fout( 'Het formulier werd te snel verzonden. Probeer het opnieuw.' );
	}

	// 2. Eenvoudige rate limit: max. 5 verzoeken per uur per IP-adres.
	$ip  = isset( $_SERVER['REMOTE_ADDR'] ) ? sanitize_text_field( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ) : 'onbekend';
	$key = 'mda_contact_' . md5( $ip );
	$aantal = (int) get_transient( $key );
	if ( $aantal >= 5 ) {
		$fout( 'U heeft te veel berichten verstuurd. Probeer het later opnieuw.', 429 );
	}

	// 3. Velden ophalen en opschonen.
	$naam     = sanitize_text_field( wp_unslash( $_POST['naam'] ?? '' ) );
	$bedrijf  = sanitize_text_field( wp_unslash( $_POST['bedrijfsnaam'] ?? '' ) );
	$telefoon = sanitize_text_field( wp_unslash( $_POST['telefoon'] ?? '' ) );
	$email    = sanitize_email( wp_unslash( $_POST['email'] ?? '' ) );
	$dienst   = sanitize_text_field( wp_unslash( $_POST['dienst'] ?? '' ) );
	$bericht  = sanitize_textarea_field( wp_unslash( $_POST['bericht'] ?? '' ) );
	$privacy  = ! empty( $_POST['privacy'] );
	$verwerk  = ! empty( $_POST['verwerking'] );

	// 4. Validatie van de verplichte velden.
	if ( strlen( $naam ) < 2 || strlen( $telefoon ) < 7 || ! is_email( $email ) || strlen( $bericht ) < 5 ) {
		$fout( 'Controleer of alle verplichte velden correct zijn ingevuld.' );
	}
	if ( ! $privacy || ! $verwerk ) {
		$fout( 'U moet akkoord gaan met het privacybeleid en de verwerking van uw gegevens.' );
	}

	// 5. Mail opstellen. Afzender = eigen domein (SPF/DKIM), antwoorden gaan naar de klant.
	$naar    = 'websitecontact@mdagroup.eu';
	$onderwerp = 'Nieuw contactverzoek via mdagroup.eu - ' . $naam;

	$regels = array(
		'Naam: '                 . $naam,
		'Bedrijfsnaam: '         . ( $bedrijf ?: '-' ),
		'Telefoonnummer: '       . $telefoon,
		'E-mailadres: '          . $email,
		'Dienst(en): '           . ( $dienst ?: '-' ),
		'',
		'Bericht:',
		$bericht,
		'',
		'Akkoord privacybeleid: ja',
		'Akkoord gegevensverwerking voor dit contactverzoek: ja',
		'Verzonden op: ' . wp_date( 'd-m-Y H:i' ),
	);

	$headers = array(
		'Content-Type: text/plain; charset=UTF-8',
		'From: MDA Group website <websitecontact@mdagroup.eu>',
		'Reply-To: ' . $naam . ' <' . $email . '>',
	);

	$verzonden = wp_mail( $naar, $onderwerp, implode( "\n", $regels ), $headers );

	if ( ! $verzonden ) {
		$fout( 'Verzenden is niet gelukt. Probeer het later opnieuw of mail naar websitecontact@mdagroup.eu.', 500 );
	}

	set_transient( $key, $aantal + 1, HOUR_IN_SECONDS );
	wp_send_json_success();
}
				
			

Neem contact met ons op

Heeft u een vraag of wilt u meer weten over onze diensten? Laat uw gegevens achter en wij nemen zo snel mogelijk contact met u op.

Contactformulier

Velden met een * zijn verplicht.

Vul uw naam in.
Vul een geldig telefoonnummer in.
Vul een geldig e-mailadres in.
Vul uw bericht in.
U moet akkoord gaan met het privacybeleid.
U moet akkoord gaan met de verwerking van uw gegevens.