login) { $_REQUEST['login'] = $User->login; $_REQUEST['email'] = $_REQUEST['email'] ?: $User->email; } else { unset($_REQUEST['login']); } $error = mailform($_REQUEST, $Page->place); if (!empty($error)) { print "

$error

\n\n"; } function mailform($input = [], $config = []) { $source = $config['subject'] ?? (empty($input['subject']) ? 'reactie' : $input['subject']); $domain = preg_replace('/^www\./', '', $_SERVER['HTTP_HOST']); $rcpt = $config['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.'; } 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[^\s\'@]{1,64}@[.a-zA-Z0-9-]{4,63}\z/', @$input['email']) ? $input['email'] : "noreply@$domain"; if ($displayname = @$input['naam']) { $reply = sprintf('"%s" <%s>', addcslashes($displayname, "\\\"\0..\37"), $reply); } $header = "From: $reply"; if ($origin = @$_SERVER['REMOTE_ADDR']) { if ($resolved = @gethostbyaddr($origin) and $resolved !== $origin) { $origin .= sprintf(' (%s)', gethostbyaddr($origin)); } $header .= "\r\nReceived: from $origin by $domain{$config['url']}; ".date('r'); } foreach (array( 'X-Accept-Language' => 'HTTP_ACCEPT_LANGUAGE', 'User-Agent' => 'HTTP_USER_AGENT', ) as $mailhdr => $serverhdr) { if (empty($_SERVER[$serverhdr])) continue; $header .= "\r\n$mailhdr: ".$_SERVER[$serverhdr]; } $body = ''; foreach ($input as $k => $v) { $body .= "$k: $v\r\n"; } if ($logfile = fopen('maillog.txt', 'a')) { $logdata = "Date: ".strftime("%F %T"); $logdata .= "\nTo: $rcpt\nSubject: $subject\n$header\n\n$body.\n\n"; fwrite($logfile, str_replace("\r\n", "\n", $logdata)); } $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; }