Avatar billede Jimmi_andersen Nybegynder
16. december 2011 - 18:52 Der er 8 kommentarer og
1 løsning

Tilpasning af PHP til flere modtagere

Hej

Jeg har et godt fungerende mailscript som sender mail via mit website. Jeg vil gerne udvide formen til at indeholde flere modtagere.

Jeg har en form som ser således ud som ikke har en valgbox til modtagere. Eller en select som det hedder. Sådan en vil jeg gerne have flettet ind her.

Under den har jeg min php tekst og her ved jeg ikke hvor jeg skal rette teksten til således at mailen sendes til de valgte modtagere. Håber i kan hjælpe.

PS scriptet er noget jeg engang fandt på nettet.

Glædelig jul
Jimmi


<form method="post" action="contact.php">
<table width="330" height="20" border="0" bgcolor="#ffffff" cellspacing="5" cellpadding="0" style="font-size:8pt;font-family:tahoma;color:#333333;font-weight:bold;">
<tr>
    <td>Dit navn</td>
    <td><div style="text-align:right"><input type="text" size="40" name="name" style="font-size:8pt;font-family:tahoma;color:#5b5b5b;" /></div></td>
</tr>
</table>

<table width="330" height="20" border="0" bgcolor="#ffffff" cellspacing="5" cellpadding="0" style="font-size:8pt;font-family:tahoma;color:#333333;font-weight:bold;">
<tr>
    <td>Email</td>
    <td><div style="text-align:right"><input type="text" size="40" name="email" style="font-size:8pt;font-family:tahoma;color:#5b5b5b;" /></div></td>
</tr>
</table>

<table width="330" height="20" border="0" bgcolor="#ffffff" cellspacing="5" cellpadding="0" style="font-size:8pt;font-family:tahoma;color:#333333;font-weight:bold;">
<tr>
    <td>Emne</td>
    <td><div style="text-align:right"><input type="text" size="40" name="emne" style="font-size:8pt;font-family:tahoma;color:#5b5b5b;" /></div></td>
</tr>
</table>

<table width="330" height="20" border="0" bgcolor="#ffffff" cellspacing="5" cellpadding="0" style="font-size:8pt;font-family:tahoma;color:#333333;font-weight:bold;">
<tr valign="top">
    <td>Besked</td>
    <td><div style="text-align:right"><textarea wrap="physical" rows="5" cols="40" name="besked" style="font-size:8pt;font-family:tahoma;color:#5b5b5b;border:thin;"></textarea></div></td>
</tr>
</table>

<table width="330" height="20" border="0" bgcolor="#ffffff" cellspacing="5" cellpadding="0" style="font-size:8pt;font-family:tahoma;color:#333333;font-weight:bold;">
<tr valign="top">
    <td></td>
    <td><div style="text-align:right"><input type="submit" value=" Send Besked " name="submit" id="t6" style="font-family:verdana;font-size:7pt;font-weight:bold;color:#333333;background-image:url( images/button5.png);" /></div></td>
</tr>
</table>
</form>



<?php
if (isset($_POST['submit']))
{
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['emne']) &&  // tjek, at der er skrevet et emne
!empty($_POST['besked']) &&  // tjek, at der er skrevet en besked

// her følger sikringen mod spambotter
!strpos($_POST['name'], "www.jalightandsound.dk") &&  // tjek, at dit domæne ikke er skrevet i feltet "navn"
!strpos($_POST['email'], "www.jalightandsound.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"

// er alt ok, fortsættes med afsendelse af mailen
{
  $headers="From: ".$_POST['name']."<".$_POST['email'].">";
  if (@$_POST['customer_copy'])
  {
  $headers .= "\r\nBcc: ".$_POST['email'];
  }
  $body .= "Den " . date("d/m y") . " kl. " . date("G:i") . " skrev " . $_POST['name'] . ":\r\n\r\n" . $_POST['besked'];
  if (@mail("info@jalightandsound.dk", strip_tags($_POST['emne']),
  stripslashes(strip_tags($body)), $headers))
  {
  echo "<p>Tak for din henvendelse!</p>";
  }
  else
  {
  echo "<p>Der opstod en fejl. Prøv venligst igen!</p>";
  }
}
else
{
  echo "<p>Et eller flere felter mangler at blive udfyldt!</p>";
}
}
?>
Avatar billede olsensweb.dk Ekspert
16. december 2011 - 21:18 #1
er det noget ala dette du vil ??
html
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
    .table{
        width: 330px;
        height: 20px;
        border: 0px;
        background-color:#ffffff;
        border-spacing:5pt; /* cellspacing="5" */
        padding: 0px; /* cellpadding="0" */
       
        font-size: 8pt;
        font-family: tahoma;
        color: #333333;
        font-weight: bold;
    }
    .input{
        font-size: 8pt;
        font-family: tahoma;
        color: #5b5b5b;
    }
    </style>
    <script type="text/javascript">
    </script>
</head>
<body>
<form method="post" action="contact.php">
<table class="table">
<tr>
    <td>Dit navn</td>
    <td><div style="text-align:right"><input type="text" size="40" name="name" class="input" /></div></td>
</tr>
</table>
<table class="table">
<tr>
    <td>Email</td>
    <td><div style="text-align:right"><input type="text" size="40" name="email" class="input" /></div></td>
</tr>
</table>
<table class="table">
<tr>
    <td>Emne</td>
    <td><div style="text-align:right"><input type="text" size="40" name="emne" class="input" /></div></td>
</tr>
</table>
<table class="table">
<tr>
    <td>modtagerer</td>
    <td><div style="text-align:right">
      <select name="names[]" size="3" multiple id="names">
        <option value="0">vælg</option>
        <option value="Ronny Olsen &lt;ronny.olsen@invalid.dk&gt;">ronols</option>
        <option value="Jimmi andersen &lt;Jimmi_andersen@unkown.mail.dk&gt;">Jimmi andersen</option>
        <option value="Palle Gulvballe &lt;palle@gulvballe.dk&gt;">Palle Gulvballe</option>
      </select>
    </div></td>
</tr>
</table>

<table class="table">
<tr>
    <td>Besked</td>
    <td><div style="text-align:right"><textarea wrap="physical" rows="5" cols="40" name="besked" class="input" ></textarea></div></td>
</tr>
</table>
<table class="table">
<tr>
    <td></td>
    <td><div style="text-align:right"><input type="submit" value=" Send Besked " name="submit" id="t6" style="font-family:verdana;font-size:7pt;font-weight:bold;color:#333333;background-image:url( images/button5.png);" /></div></td>
</tr>
</table>
</form>
</body>
</html>



contact.php
<?php
if (isset($_POST['submit']))
{
    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['emne']) &&  // tjek, at der er skrevet et emne
        !empty($_POST['besked']) &&  // tjek, at der er skrevet en besked

        // her følger sikringen mod spambotter
        !strpos($_POST['name'], "www.jalightandsound.dk") &&  // tjek, at dit domæne ikke er skrevet i feltet "navn"
        !strpos($_POST['email'], "www.jalightandsound.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"
        // er alt ok, fortsættes med afsendelse af mailen
    {
        $body='';
        $to = '';
        $names=$_POST['names']; 
        $lng = count($names); 
        for($i=0; $i<$lng; $i++){
            $to .= $names[$i].";";   
        }
        $to = substr($to,0,-1); // fjerner den sidste karakter (;)

 
        $headers="From: ".$_POST['name']."<".$_POST['email'].">";
        if (@$_POST['customer_copy'])
        {
            $headers .= "\r\nBcc: ".$_POST['email'];
        }
        $body .= "Den " . date("d/m y") . " kl. " . date("G:i") . " skrev " . $_POST['name'] . ":\r\n\r\n" . $_POST['besked'];
 
        if (@mail($to, strip_tags($_POST['emne']), stripslashes(strip_tags($body)), $headers))  {
            echo "<p>Tak for din henvendelse!</p>";
        }
        else {
            echo "<p>Der opstod en fejl. Prøv venligst igen!</p>";
        }
    }
    else
    {
        echo "<p>Et eller flere felter mangler at blive udfyldt!</p>";
    }
}
?>
Avatar billede Jimmi_andersen Nybegynder
16. december 2011 - 22:04 #2
Ikke helt. men ligsom denne

<option selected>Vælg her</option>
  <option value="tekst1<tekst1@mail.dk>">tekst1</option>
  <option value="tekst2<tekst2@mail.dk>">tekst2</option>
  <option value="tekst3<tekst3@mail.dk>">tekst3</option>
  <option value="tekst31<tekst3@mail.dk>">tekst3</option>

Selve den del af formen tror jeg godt jeg kan, men det er mere i selve php koden jeg ikke ved hvordan og hvor jeg skal ændre koden således at der bliver sendt til den emaildressse som brugeren har valgt i modtager feltet
Avatar billede olsensweb.dk Ekspert
16. december 2011 - 22:35 #3
prøv at se i contact.php det der er fremhævet

du skal nok incode < i value feltet.

alternativt kunne man overfører value som
"tekst1,tekst1@mail.dk"

og så explode på comma serverside
Avatar billede Jimmi_andersen Nybegynder
16. december 2011 - 23:12 #4
Hvor er value feltet i det makerede. ?
Kan du ikke sætte det ind i koden, som det skal se ud
Avatar billede olsensweb.dk Ekspert
17. december 2011 - 14:27 #5
hvis det ikke virker som i #1
ville jeg udskifte de fremhævede blokke med
<select name="names[]" size="3" multiple id="names">
    <option value="0">vælg</option>
    <option value="Ronny Olsen &lt;ronny.olsen@invalid.dk&gt;">ronols</option>
    <option value="Jimmi andersen &lt;Jimmi_andersen@unkown.mail.dk&gt;">Jimmi andersen</option>
    <option value="Palle Gulvballe &lt;palle@gulvballe.dk&gt;">Palle Gulvballe</option>
</select>

laves om til
<select name="names[]" size="3" multiple id="names">
    <option value="0">vælg</option>
    <option value="Ronny Olsen,ronny.olsen@invalid.dk">ronols</option>
    <option value="Jimmi andersen,Jimmi_andersen@unkown.mail.dk">Jimmi andersen</option>
    <option value="Palle Gulvballe,palle@gulvballe.dk">Palle Gulvballe</option>
</select>

og
$to = '';
$names=$_POST['names']; 
$lng = count($names); 
for($i=0; $i<$lng; $i++){
    $to .= $names[$i].";";   
}
$to = substr($to,0,-1); // fjerner den sidste karakter (;)

laves om til
$to = '';
$names=$_POST['names']; 
$lng = count($names); 
for($i=0; $i<$lng; $i++){
    $parts = explode(",",$names[$i]);
    $to .= $parts[0]."<".$parts[1].">;";
}
$to = substr($to,0,-1); // fjerner den sidste karakter (;)



jeg var inde og kigge på din hjemmeside, og kan sige følgende:
1) valider dine sider, ellers kan du ikke værer sikker på hvordan det præsenteres, da browserene skal gætte på hvordan indholdes skal fortolkes

2) få styr på dit tegnsæt, æøå visses ikke under FF da du ikke angiver et <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> på mange af dine sider
på sigt bør du nok anvende UTF-8 istedet for ISO-8859-1, da utf-8 er defacto standart

3) brug CSS til at style din side, prøv at sammenligne indlæg #0 med #1, hvor jeg kun har stylet input boxen og tabellerne, du opnår detved nemmere vedligeholdelse, og muligheden for at ligge det ud i extern stylesheet

4) tabeller er til tabulære data ikke til design
Avatar billede Jimmi_andersen Nybegynder
17. december 2011 - 16:24 #6
Jeg har nu prøvet begge muligheder og ingen af dem virker.

Du kan teste her www.jimmi.org/test.htm

Til dine andre kommentar vedr, min hjemmeside.

1. Jeg er klar over at browserne viser min side forskelligt, og min side umiddelbart kun er lavet til IE, men jeg vil naturligvis gerne at den vises korekt i alle browsere på sigt.

2. Jeg har overset meta infoen - Den skal selvfølgelig være der.

3. Jeg er ikke stærk i CSS da det er nyt for mig endnu. Jeg har dog tænkt tanken om css, men jeg er ikke sikker på jeg kan lave samme design med css, som med rammerne (tabeller) men måske. Selvom der ikke er stor forskel på hvordan mine undersider ser ud, så vil det tage mig rigtig lang tid at lave det hele om til css. Mht vedligeholdese kan jeg godt se css er nemmer da man kun ændre i denne fil. Det kunne være godt hvis jeg kunne få min menu i css men så vidt jeg ved er det kun selve farver og opbygning og IKKE tekst man kan lave med css
Avatar billede olsensweb.dk Ekspert
26. december 2011 - 13:49 #7
nu har jeg lige prøvet løsning 2, humlen ligger i der mangler 2 mellemrum (før og efter seperator, mellem mail addresser), jeg har så også lavet seperatoren om til et komma, men det burde også virke med et semicollon

dette
$to = '';
$names=$_POST['names']; 
$lng = count($names); 
for($i=0; $i<$lng; $i++){
    $parts = explode(",",$names[$i]);
    $to .= $parts[0]."<".$parts[1].">;";
}
$to = substr($to,0,-1); // fjerner den sidste karakter (;)


skal laves om til
$to = '';
$names=$_POST['names']; 
$lng = count($names); 
for($i=0; $i<$lng; $i++){
    $parts = explode(",",$names[$i]);
    $to .= $parts[0]."<".$parts[1]."> , ";
}
$to = substr($to,0,-3); // fjerner de sidste 3 karakter ( , )


men denne rettelse får jeg mails på de mailaddresser jeg vælger

det er givetvis det sammen problem med løsning 1, men det kan du selv teste af
Avatar billede olsensweb.dk Ekspert
26. december 2011 - 13:53 #8
nå den fik ikke boldet dette, selv om der var sat tags !!
"> , ";

linjen skal se sådan ud
$to .= $parts[0]."<".$parts[1]."> , ";
Avatar billede Jimmi_andersen Nybegynder
15. januar 2012 - 07:52 #9
Det lykkedes ikke
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