X-Git-Url: http://git.shiar.nl/minimedit.git/blobdiff_plain/41811556ca2ca3ca29191bee012c35e5f40a3995..7213175b8391e8f47f54096fada4fdc33d82b8a1:/widget/contact.php diff --git a/widget/contact.php b/widget/contact.php new file mode 100644 index 0000000..b505375 --- /dev/null +++ b/widget/contact.php @@ -0,0 +1,89 @@ +login; + } + $error = mailform($_REQUEST); + if (!empty($error)) { + print "

$error

\n\n"; + } +} + +function mailform($input = []) +{ + $source = empty($input['subject']) ? 'reactie' : $input['subject']; + $domain = preg_replace('/^www\./', '', $_SERVER['HTTP_HOST']); + $rcpt = "info@$domain"; + $subject = "Formulier {$_SERVER['HTTP_HOST']}: $source"; + + if (!$input) { + return 'Geen gegevens ontvangen. Probeer het nog eens.'; + } + +switch ($source) { + case 'melding': + if (empty($input['login'])) { + return "Inloggen is verplicht om een melding te plaatsen."; + } + if (empty($input['body'])) { + return "Geen bericht opgegeven."; + } + break; + case 'bbq': + if (empty($input['naam']) or empty($input['huis'])) { + return 'De bedoeling is juist dat je opgeeft wie er komt.'; + } + $rcpt .= ', Heleen '; + break; + default: + if (empty($input['email']) or !preg_match('/.+@.+\..+/', $input['email'])) { + return 'Een geldig e-mailadres is verplicht zodat we antwoord kunnen geven.'; + } + if (isset($input['naam']) and empty($input['naam'])) { + return 'Geef ook een naam waarmee we u kunnen aanspreken.'; + } +} + + $reply = preg_match('/\A\w+@\w+\.[a-z]+\z/', @$input['email']) + ? $input['email'] : "noreply@$domain"; + $header = "From: $reply"; + + foreach (array( + 'X-Accept-Language' => 'HTTP_ACCEPT_LANGUAGE', + 'User-Agent' => 'HTTP_USER_AGENT', + ) as $mailhdr => $serverhdr) { + if (!$_SERVER[$serverhdr]) continue; + $header .= "\r\n$mailhdr: ".$_SERVER[$serverhdr]; + } + + $origin = $_SERVER['REMOTE_ADDR']; + if ($resolved = @gethostbyaddr($origin) and $resolved !== $origin) { + $origin .= sprintf(' (%s)', gethostbyaddr($origin)); + } + $body = "Ingevuld vanaf $origin:\r\n\r\n"; + + foreach ($input as $k => $v) { + $body .= "$k: $v\r\n"; + } + + $sent = mail($rcpt, $subject, $body, $header); + if (!$sent) + return 'Helaas ging er iets mis bij het doorvoeren. Probeer het later nog eens.'; + + switch ($source) { + case 'bestelling': + print '

Bedankt voor uw bestelling. U ontvangt z.s.m. de bevestiging van deze bestelling via uw opgegeven e-mailadres.

'; + break; + case 'bbq': + print "

Bedankt voor je deelname. Tot ziens!

"; + break; + case 'melding': + print "

Bedankt voor de melding. Na goedkeuring zal het hier geplaatst worden.

"; + break; + default: + print '

Bedankt voor uw reactie!

'; + } + return; +}