Hej
Jeg er igang med at lave et site hvor man skal kunne se boliger, hvis man er på udkig efter en ny, eller ønske af komme af med sin egen. Jeg er dog stødt ind i et lille problem, da jeg en gang har fået lavet et mailscript til et andet formål og nu har jeg et par spørgsmål, som jeg håber nogen kan være behjælpelig med at besvare.
Scriptet ser således ud:
- <?php
- error_reporting(E_ALL);
- include '../inc/connect.php';
- //Gem indhold fra formularen
- $titel = mysql_real_escape_string($_POST['overskrift']);
- $billede = mysql_real_escape_string($_POST['billede']);
- $boligtype = mysql_real_escape_string($_POST['type']);
- $pris = mysql_real_escape_string($_POST['salg']);
- $udbetaling = mysql_real_escape_string($_POST['udbetaling']);
- $leje = mysql_real_escape_string($_POST['leje']);
- $depositum = mysql_real_escape_string($_POST['depositum']);
- $beskrivelse = mysql_real_escape_string($_POST['beskrivelse']);
-
- //
- //Indsæt i database
- if (isset($_POST['submit']) && $_POST['spamcheck'] == "") {
- $tabeldata = "INSERT INTO boliger(titel, billede, boligtype, pris, udbetaling, leje, depositum, beskrivelse)VALUES ('$titel','$billede', '$boligtype', '$pris', '$udbetaling', '$leje', '$depositum', '$beskrivelse')";
-
- $resultat = mysql_query($tabeldata) or die (mysql_error());
- }
- function escapeAddr($addr) {
- $check = preg_match('/(.*)<(.*)>/', $addr, $a);
- if ($check) $addr = '=?UTF-8?B?'.base64_encode($a[1]).'?= <'.$a[2].'>';
- return $addr;
- }
- function mail_utf8($to, $subject='', $message='', $from='', $cc='', $bcc='') {
- $from = escapeAddr($from);
- $header = 'From: '.$from.PHP_EOL
- . 'Return-Path: '.$from.PHP_EOL
- . 'Reply-To: '.$from.PHP_EOL
- . 'MIME-Version: 1.0'.PHP_EOL
- . 'Content-type: text/html; charset=UTF-8'.PHP_EOL
- . 'X-Mailer: PHP/'.phpversion().PHP_EOL
- . 'Content-Transfer-Encoding: 8bit'.PHP_EOL;
- if ($cc!='') $header .= 'Cc: '.escapeAddr($cc).PHP_EOL;
- if ($bcc!='') $header .= 'Bcc: '.escapeAddr($bcc).PHP_EOL;
- $header .= PHP_EOL;
- return mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $header);
- }
- $arrReplace = array(
- '%{NAVN}%' => $navn,
- '%{ADRESSE}%' => $adresse,
- '%{POSTBY}% ' => $postby,
- '%{MAIL}% ' => $mail,
- '%{TYPE}% ' => $boligtype,
- '%{PRIS}% ' => $pris,
- '%{UDBETALING}%' => $udbetaling,
- '%{LEJE}%' => $leje,
- '%{DEPOSITUM}%' => $depositum,
- '%{BESKRIVELSE}%' => $beskrivelse
- );
- $templ = file_get_contents('mail_msg.tmpl');
- $besked = strtr($templ, $arrReplace);
- $success = mail_utf8($mail, 'Bolig gemt i system', $besked, 'autosvar@domæne.dk', '', 'info@domæne.dk');
- if ($success) {
- // Mail sendt
- header ('Location: done.php?msg=SENDT');
- $_SESSION['done'] = '<h1>Tak for din henvendelse</h1><p>Tak for din henvendelse. Vi har gemt din bolig i systemet og den kan nu ses på vores side. Vi kontakter dig hurtigst muligt, når der kommer et henvendelse</p>';
- } else {
- // Der er en fejl!
- $_SESSION['done'] = '<h1>Hovsa!</h1><p>Hovsa! Der gik noget galt. Hvis det er første gang du ser denne fejl prøv venligst igen og tjek at du har udfyldt alle krævede felter.<br />Opstå fejlen igen bedes du kontakte os via kontaktsiden eller den, på samme side, oplyste mailadresse.</p><p>Vi undskylder ulejeligheden</p>';
- header ('Location: done.php?msg=FEJL');
- }
- ?>
Jeg ved godt at der mangler et par variabler for at scriptet virker, men det kan jeg altid lave når problemet er løst.
De problemer jeg har er som følger:
Jeg kan ikke helt finde ud af hvordan jeg får den til at sende to mails med forskelligt indhold. En mail til sidens ejer og en til den bruger der har oprettet boligen. Som I kan se bruger scriptet template-filer til at udskifte oplysningerne individuelt for hver forespørgsel.
Så er der variablen $success, som I lige får herunder igen:
- $success = mail_utf8($mail, 'Bolig gemt i system', $besked, 'autosvar@domæne.dk', '', 'info@domæne.dk');
Som scriptet virker lige nu, så vil der stadig blive sendt en mail, også selv SQL-indsættelse skulle fejler. Jeg ønsker dog at sørge for at hvis SQL-indsættelse lykkedes og hvis SPAM-check er tomt, ligesom ved indsættelse i SQL, så må den først sende mailen.
Kan jeg blot indramme den ene variabel i et if-statement og så tage det sidste if og placere bagefter som det er?
Til den dobbelte mailudsendelse er jeg godt klar over at jeg skal bruge to filer, men da skal jeg jo bare udføre $success to gange og bruge to forskellige template variabler.