21. juni 2006 - 16:15Der er
8 kommentarer og 1 løsning
Script der sender mail og indsætter i database på én gang
Hej
Jeg er ved at lave en side hvor man skal kunne tilmelde sig en gammelelevweekend på en højskole. Jeg skal bruge et script der både sender en mail og indsætter i en database.
Det script jeg har indsætter i en database og sender en mail. Men mailen har ikke noget indhold. Den har navn, afsender og emne, men noget indhold. Indholdet skal være de informationer man har tastet ind i databasen, samt lidt tekst der gør det lidt mere læsevenligt.
Jeg har forsøgt med nedstående script, men der er noget galt et eller andet sted (mailformen er på en side for sig selv):
<?php
include 'dbforbindelse.inc.php';
if (isset($_POST['submit'])) {
//Data fyldes i databasen - denne kode er sat ind fra en anden, dvs den er ikke med den oprindelige kode $name = $_POST['name']; $email = $_POST['email']; $besked = $_POST['message']; $aargang = $_POST['aargang']; $jubilar = $_POST['jubilar']; $liniefag = $_POST['liniefag']; $ankomst = $_POST['ankomst']; $sql = "INSERT INTO tilmeldte SET navn='$name', email='$email', besked='$besked', aargang='$aargang', jubilar='$jubilar', liniefag='$liniefag', ankomst='$ankomst', dato=LOCALTIMESTAMP()"; if (@mysql_query($sql)) {
// er alt ok, fortsættes med afsendelse af mailen
if (!empty($_POST['name']) && // tjek, at der er skrevet et navn !empty($_POST['email']) && // tjek, at der er skrevet en e-mail-adresse !empty($_POST['subject']) && // tjek, at der er skrevet et subject !empty($_POST['message']) && // tjek, at der er skrevet en besked !empty($_POST['aargang']) && // tjek, at der er skrevet en argang !empty($_POST['jubilar']) && // tjek, at der er skrevet en jubilar !empty($_POST['liniefag']) && // tjek, at der er skrevet et liniefag !empty($_POST['ankomst']) && // tjek, at der er skrevet et ankomst tidspunkt
// her følger sikringen mod spambotter !strpos($_POST['name'], "stovringhojskole.dk") && // tjek, at dit domæne ikke er skrevet i feltet "navn" !strpos($_POST['email'], "stovringhojskole.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email" !strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn" !eregi("\r",$_POST['name']) && // tjek, at der ikke er "vogn-retur" i "navn" !eregi("\n",$_POST['name']) && // tjek, at der ikke er "linjeskift" i "navn" !eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email" !eregi("\n",$_POST['email'])) // tjek, at der ikke er "linjeskift" i "email"
$mail_body=" Hej Marianne.
Jeg vil gerne tilmelde mig til Sommerfesten 2006. Jeg kommer $ankomst.
Med venlig hilsen $name $aargang Liniefag: $liniefag
Evt. bemærkning: $besked";
$headers="From: ".$_POST['name']."<".$_POST['email'].">"; if (@$_POST['customer_copy']) { $headers .= "\r\nBcc: ".$_POST['email']; } if (@mail("jost@dicksmock.dk", strip_tags($_POST['subject']), stripslashes(strip_tags($_POST[$mail_body ])), $headers))
{ echo '<p>Du er nu tilmeldt sommerfesten. Du kan se <a href="tilmeldte.php">her</a> hvem der også er tilmeldt. Hvis du alligevel ikke kan komme så skynd dig at skrive en mail til Marianne på marianne@stovringhojskole.dk, så Christa ikke laver for meget mad.<br />' ; } else { echo '<p>Der skete en fejl, <a href="tilmeld.php">prøv igen</a> <br />FEJL: ' . mysql_error() . '</p>'; }
Eller retter det gør det ikke? Mailformen tilbyder at man kan få sendt en kopi af mailen til sig selv. Med den nye rettelse bliver der ikke sendt en mail til hovedmodtageren, i det her tilfælde jost@dicksmock.dk. Kun til afsender af formularen og kun hvis man beder om det og har tastet sin mail ind.
if (!empty($_POST['name']) && // tjek, at der er skrevet et navn !empty($_POST['email']) && // tjek, at der er skrevet en e-mail-adresse !empty($_POST['subject']) && // tjek, at der er skrevet et subject !empty($_POST['message']) && // tjek, at der er skrevet en besked !empty($_POST['aargang']) && // tjek, at der er skrevet en argang !empty($_POST['jubilar']) && // tjek, at der er skrevet en jubilar !empty($_POST['liniefag']) && // tjek, at der er skrevet et liniefag !empty($_POST['ankomst']) && // tjek, at der er skrevet et ankomst tidspunkt
// her følger sikringen mod spambotter !strpos($_POST['name'], "stovringhojskole.dk") && // tjek, at dit domæne ikke er skrevet i feltet "navn" !strpos($_POST['email'], "stovringhojskole.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email" !strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn" !eregi("\r",$_POST['name']) && // tjek, at der ikke er "vogn-retur" i "navn" !eregi("\n",$_POST['name']) && // tjek, at der ikke er "linjeskift" i "navn" !eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email" !eregi("\n",$_POST['email'])) // tjek, at der ikke er "linjeskift" i "email"
$mail_body=" Hej Marianne.
Jeg vil gerne tilmelde mig til Sommerfesten 2006. Jeg kommer $ankomst.
Med venlig hilsen $name $aargang Liniefag: $liniefag
Evt. bemærkning: $besked";
$headers="From: ".$_POST['name']."<".$_POST['email'].">"; if (@$_POST['customer_copy']) { $headers .= "\r\nBcc: ".$_POST['email']; } if (@mail("joshans@edu.ats.dk ", strip_tags($_POST['subject']), stripslashes(strip_tags($mail_body /*'message' . 'aargang' . 'jubilar' . 'liniefag' . 'ankomst'*/)), $headers)) //Er det den rigtige måde at kombinere flere ting i en mail?
{ echo '<p>Du er nu tilmeldt sommerfesten. Du kan se <a href="tilmeldte.php">her</a> hvem der også er tilmeldt. Hvis du alligevel ikke kan komme så skynd dig at skrive en mail til Marianne på marianne@stovringhojskole.dk, så Christa ikke laver for meget mad.<br />' ; } else { echo '<p>Der skete en fejl, <a href="tilmeld.php">prøv igen</a> <br />FEJL: ' . mysql_error() . '</p>'; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.