contact: code cleanup (mailform function)
[minimedit.git] / contact.php
1 <?php
2 if ($_POST) {
3         print mailform($_REQUEST);
4 }
5
6 function mailform($input = [])
7 {
8         $source = empty($input['subject']) ? 'reactie' : $input['subject'];
9         if (!$input) {
10                 return 'Geen gegevens ontvangen. Probeer het nog eens.';
11         }
12         if (empty($input['email']) or !preg_match('/.+@.+\..+/', $input['email'])) {
13                 return 'Een geldig e-mailadres is verplicht. Ga terug en probeer het nog eens.';
14         }
15         if (isset($input['naam']) and empty($input['naam'])) {
16                 return 'Er ontbraken vereiste gegevens. Ga terug en probeer het nog eens.';
17         }
18
19         $rcpt = 'info@covexcelsiorleiderdorp.nl';
20         $subject = "Formulier $_SERVER[HTTP_HOST]: $source";
21         $reply = preg_match('/\A\w+@\w+\.[a-z]+\z/', $input['email'])
22                 ? $input['email'] : $rcpt;
23         $header = "From: $reply";
24
25         foreach (array(
26                 'X-Accept-Language' => 'HTTP_ACCEPT_LANGUAGE',
27                 'User-Agent'        => 'HTTP_USER_AGENT',
28         ) as $mailhdr => $serverhdr) {
29                 if (!$_SERVER[$serverhdr]) continue;
30                 $header .= "\r\n$mailhdr: ".$_SERVER[$serverhdr];
31         }
32
33         $origin = $_SERVER['REMOTE_ADDR'];
34         $origin .= sprintf(' (%s)', gethostbyaddr($origin));
35         $body = "Ingevuld vanaf $origin:\r\n\r\n";
36
37         foreach ($input as $k => $v) {
38                 $body .= "$k: $v\r\n";
39         }
40
41         $sent = mail($rcpt, $subject, $body, $header);
42         if (!$sent)
43                 return 'Helaas ging er iets mis bij het doorvoeren. Probeer het later nog eens.';
44
45         if ($source == 'bestelling')
46                 print '<p>Bedankt voor uw bestelling. U ontvangt z.s.m. de bevestiging van deze bestelling via uw opgegeven e-mailadres.</p>';
47         else
48                 print '<p>Bedankt voor uw reactie!</p>';
49         return;
50 }