Avatar billede jost Nybegynder
21. juni 2006 - 16:15 Der 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>';
  }

  }   
  }


?>

Med venlig hilsen

Jost L. Hansen
Avatar billede jakobdo Ekspert
21. juni 2006 - 16:35 #1
Du skal rette: $_POST[$mail_body] til $mail_body

I koden: if (@mail("jost@dicksmock.dk", strip_tags($_POST['subject']),
  stripslashes(strip_tags($_POST[$mail_body
  ])), $headers))
Avatar billede jost Nybegynder
22. juni 2006 - 14:30 #2
Dvs at den så skal se sådan ud her?

if (@mail("jost@dicksmock.dk", strip_tags($_POST['subject']),
  stripslashes(strip_tags($mail_body)), $headers))
Avatar billede jost Nybegynder
22. juni 2006 - 14:32 #3
jeg testede lige og det virkede. Smid et svar og du får pointsne. Tusinde tak.
Avatar billede jost Nybegynder
22. juni 2006 - 14:38 #4
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.

Hvad er der nu galt?
Avatar billede jost Nybegynder
22. juni 2006 - 14:51 #5
Jeg tog fejl. Det er kopien der ikke bliver sendt. Er jeg kommet til at slette noget?

Koden ser nu sådan ud (der er et par kommentare i koden, som jeg ikke lige har slettet i denne copy/paste, men de burde jo ikke have nogen betydning):

<?php

include 'dbforbindelse.inc.php';

if (isset($_POST['submit']))
{
 
//Data fyldes i databasen
$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("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>';
  }

  }   
  }


?>
Avatar billede jost Nybegynder
22. juni 2006 - 16:38 #6
hmm, det virker vist alligevel. Det var åbenbart mailserveren der var langsom til at sende mailen ud.
Avatar billede jakobdo Ekspert
22. juni 2006 - 17:54 #7
Hehe, du får lige et svar!
Avatar billede jakobdo Ekspert
22. juni 2006 - 18:54 #8
Takker for point.
Avatar billede jost Nybegynder
22. juni 2006 - 22:17 #9
Selv tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester