/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Kopi til afsender
Fra : Erik Ginnerskov


Dato : 08-12-04 17:51

Hej NG

Jeg har en php mail-funktion, der ser sådan ud (modtager data fra en
formular):

<?php
if(isset($_POST['submit'])) {
if(!empty($_POST['name']) && !empty($_POST['subject']) &&
!empty($_POST['email']) && !empty($_POST['message'])) {
if(@mail("navn@domæne.dk", strip_tags($_POST['subject']),
strip_tags($_POST['message']), "From: ".$_POST['name']."
<".$_POST['email'].">")) {
echo "<p>Tak for din henvendelse.</p>";
}
else {
echo "<p>Der skete en fejl!</p>";
}
}
else {
echo "<p>Alle felter skal udfyldes!</p>";
}
}
?>

Hvordan kan jeg få scriptet til også at sende en bcc til afsender?

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



 
 
Tommy Ipsen (08-12-2004)
Kommentar
Fra : Tommy Ipsen


Dato : 08-12-04 18:44

Erik Ginnerskov wrote:

> Hvordan kan jeg få scriptet til også at sende en bcc til afsender?

Tilføj følgende header til dit kald af mail():

"Bcc: email@domæne.dk\r\n";

Mvh Tommy

Daniel Overby (08-12-2004)
Kommentar
Fra : Daniel Overby


Dato : 08-12-04 19:30

> Tilføj følgende header til dit kald af mail():
> "Bcc: email@domæne.dk\r\n";

Jeg lader brugeren selv vælge, hvorvidt han vil have tilsendt en kopi. Til
dette formål bruger jeg denne stump kode:

if(@$_POST["customer_copy"]) {
$headers .= "Bcc: ".$_POST["customer_email"]."\r\n";
}

Hvor customer_copy er en checkbox.

- Daniel



Erik Ginnerskov (08-12-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 08-12-04 21:25

Daniel Overby wrote:
>> Tilføj følgende header til dit kald af mail():
>> "Bcc: email@domæne.dk\r\n";
>
> Jeg lader brugeren selv vælge, hvorvidt han vil have tilsendt en
> kopi. Til dette formål bruger jeg denne stump kode:
>
> if(@$_POST["customer_copy"]) {
> $headers .= "Bcc: ".$_POST["customer_email"]."\r\n";
> }

Det har jeg nu forsøgt:

<?php
if(isset($_POST['submit'])) {
if(!empty($_POST['name']) && !empty($_POST['subject']) &&
!empty($_POST['email']) && !empty($_POST['message'])) {
if(@mail("erik.ginnerskov@get2net.dk", strip_tags($_POST['subject']),
strip_tags($_POST['message']), "From: ".$_POST['name']."
if(@$_POST["customer_copy"]) {
$headers .= "Bcc: ".$_POST["customer_email"]."\r\n";
}
<".$_POST['email'].">")) {
echo '<p>Tak for din henvendelse. Jeg vender tilbage så hurtigt som
muligt.</p>';
}else{
echo '<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>';
}
}else{
echo '<p>Alle felter skal udfyldes!</p>';
}
} // end php submission code
?>

.... og får så en fejlmelding:

Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE
or T_NUM_STRING in d:\home\hjemmesideskoldk\www\scripts\phpmailsender2.php
on line 19

.... hvilken netop gælder den indskudte kode. Har jeg sat koden ind et
forkert sted?

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Erik Ginnerskov (08-12-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 08-12-04 21:50

Erik Ginnerskov wrote:
> Daniel Overby wrote:
>>> Tilføj følgende header til dit kald af mail():
>>> "Bcc: email@domæne.dk\r\n";
>>
>> Jeg lader brugeren selv vælge, hvorvidt han vil have tilsendt en
>> kopi. Til dette formål bruger jeg denne stump kode:
>>
>> if(@$_POST["customer_copy"]) {
>> $headers .= "Bcc: ".$_POST["customer_email"]."\r\n";
>> }
>
Har nu forsøgt:
>
<?php
if(isset($_POST['submit'])) {
if(!empty($_POST['name']) && !empty($_POST['subject']) &&
!empty($_POST['email']) && !empty($_POST['message'])) {
if(@mail("erik.ginnerskov@get2net.dk", strip_tags($_POST['subject']),
strip_tags($_POST['message']), "From: ".$_POST['name']."
<".$_POST['email'].">")) {
echo '<p>Tak for din henvendelse. Jeg vender tilbage så hurtigt som
muligt.</p>';
}
if(@$_POST["customer_copy"]) {
$headers .= "Bcc: ".$_POST["customer_email"]."\r\n";
}else{
echo '<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>';
}
}else{
echo '<p>Alle felter skal udfyldes!</p>';
}
} // end php submission code
?>

Så får jeg ingen fejlmelding, men bcc-mailen bliver ikke sendt. Har også
forsøgt at slette 'customer_', så det indsatte ser sådan ud:

if(@$_POST["customer_copy"]) {
$headers .= "Bcc: ".$_POST["email"]."\r\n";
}

Samme resultet, ingen bcc sendes.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Erik Ginnerskov (08-12-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 08-12-04 21:20

Tommy Ipsen wrote:

>> Hvordan kan jeg få scriptet til også at sende en bcc til afsender?
>
> Tilføj følgende header til dit kald af mail():
>
> "Bcc: email@domæne.dk\r\n";

Øh, jeg kender pr. definition ikke afsenders email-adresse. Den skal hentes
fra formularen.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Tommy Ipsen (09-12-2004)
Kommentar
Fra : Tommy Ipsen


Dato : 09-12-04 00:35

Erik Ginnerskov wrote:
> Tommy Ipsen wrote:
>
>
>>>Hvordan kan jeg få scriptet til også at sende en bcc til afsender?
>>
>>Tilføj følgende header til dit kald af mail():
>>
>>"Bcc: email@domæne.dk\r\n";
>
> Øh, jeg kender pr. definition ikke afsenders email-adresse. Den skal hentes
> fra formularen.

if(isset($_POST['navnpaaemailadressefelt'])) {
$headers .= "Bcc: {$_POST['navnpaaemailadressefelt']}\r\n";
}

Erik Ginnerskov (09-12-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 09-12-04 01:23

Tommy Ipsen wrote:

> if(isset($_POST['navnpaaemailadressefelt'])) {
> $headers .= "Bcc: {$_POST['navnpaaemailadressefelt']}\r\n";
> }

Har jeg forsøgt at sætte ind:

<?php
if(isset($_POST['submit'])) {
if(!empty($_POST['name']) && !empty($_POST['subject']) &&
!empty($_POST['email']) && !empty($_POST['message'])) {
if(@mail(" navn@domæne.dk ", strip_tags($_POST['subject']),
strip_tags($_POST['message']), "From: ".$_POST['name']."
if(isset($_POST['customer_copy']) {
$headers .= "Bcc: {$_POST['email']."\r\n";
}
<".$_POST['email'].">")) {
echo "<p>Tak for din henvendelse.</p>";
}
else{
echo "<p>Der skete en fejl!</p>";
}
}
else {
echo "<p>Alle felter skal udfyldes!</p>";
}
}
?>

.... så får jeg denne fejl:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting
T_STRING or T_VARIABLE or T_NUM_STRING in
d:\home\hjemmesideskoldk\www\scripts\phpmailsender3.php on line 19

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Tommy Ipsen (09-12-2004)
Kommentar
Fra : Tommy Ipsen


Dato : 09-12-04 23:07

Erik Ginnerskov wrote:
> Tommy Ipsen wrote:
>
>
>>if(isset($_POST['navnpaaemailadressefelt'])) {
>> $headers .= "Bcc: {$_POST['navnpaaemailadressefelt']}\r\n";
>>}
>
>
> Har jeg forsøgt at sætte ind:
>
> <?php
> if(isset($_POST['submit'])) {
> if(!empty($_POST['name']) && !empty($_POST['subject']) &&
> !empty($_POST['email']) && !empty($_POST['message'])) {
> if(@mail(" navn@domæne.dk ", strip_tags($_POST['subject']),
> strip_tags($_POST['message']), "From: ".$_POST['name']."
> if(isset($_POST['customer_copy']) {
....
>
> ... så får jeg denne fejl:
>
> Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting
> T_STRING or T_VARIABLE or T_NUM_STRING in
> d:\home\hjemmesideskoldk\www\scripts\phpmailsender3.php on line 19

Skyldes en manglende slutparantes i din isset() linie.

Mvh Tommy

Erik Ginnerskov (09-12-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 09-12-04 23:23

Tommy Ipsen wrote:
>> if(isset($_POST['customer_copy']) {
> ...
>> ... så får jeg denne fejl:
>>
>> Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE,
>> expecting T_STRING or T_VARIABLE or T_NUM_STRING in
>> d:\home\hjemmesideskoldk\www\scripts\phpmailsender3.php on line 19
>
> Skyldes en manglende slutparantes i din isset() linie.

Ja, selvfølgelig. Det kan jeg da godt se, når du nu peger på det.

if(isset($_POST['customer_copy'])) {

Jeg fik det som sagt andetsteds til at fungere med Bertels hjælp.

Men tak fordi du brugte tid på projektet.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Bertel Lund Hansen (09-12-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 09-12-04 00:38

Erik Ginnerskov skrev:

>Jeg har en php mail-funktion, der ser sådan ud
>Hvordan kan jeg få scriptet til også at sende en bcc til afsender?

Lav altid indrykning i din kode. Brug også 'min' måde at skrive if'er og else'r:

<?php
if (isset($_POST['submit'])) {
if (!empty($_POST['name']) && !empty($_POST['subject']) &&
!empty($_POST['email']) && !empty($_POST['message'])) {
$headers="From: $_POST['name']<$_POST['email']>";
if (@$_POST['customer_copy']) {
$headers .= "\r\nBcc: $_POST['customer_email']";
}
if (@mail("navn@domæne.dk", strip_tags($_POST['subject']),
strip_tags($_POST['message']), $headers)) {
echo "<p>Tak for din henvendelse.</p>";
}
else {
echo "<p>Der skete en fejl!</p>";
}
}
else {
echo "<p>Alle felter skal udfyldes!</p>";
}
}
?>

Fidusen er at jeg bruger en variabel til at rumme headerne. From: er
obligatorisk; BCC tilføjes kun hvis customer_copy er sat.

Koden er utestet.

PS.
Et udtryk som:
"From: ".$_POST['name']."<".$_POST['email'].">"
synes jeg er unødigt kompliceret. Der er ingen grund til at splitte
strengen op:
"From: $_POST['name']<$_POST['email']>"

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Erik Ginnerskov (09-12-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 09-12-04 01:06

Bertel Lund Hansen wrote:

> <?php
> if (isset($_POST['submit'])) {
> if (!empty($_POST['name']) && !empty($_POST['subject']) &&
> !empty($_POST['email']) && !empty($_POST['message'])) {
> $headers="From: $_POST['name']<$_POST['email']>";
> if (@$_POST['customer_copy']) {
> $headers .= "\r\nBcc: $_POST['customer_email']";
> }
> if (@mail("navn@domæne.dk", strip_tags($_POST['subject']),
> strip_tags($_POST['message']), $headers)) {
> echo "<p>Tak for din henvendelse.</p>";
> }
> else {
> echo "<p>Der skete en fejl!</p>";
> }
> }
> else {
> echo "<p>Alle felter skal udfyldes!</p>";
> }
> }
> ?>

Testet, det kan den ikke li'. Den ville have den lange version af

"From: ".$_POST['name']."<".$_POST['email'].">"

.... derefter får jeg denne fejlmelding:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting
T_STRING or T_VARIABLE or T_NUM_STRING in
d:\home\hjemmesideskoldk\www\scripts\phpmailsender2.php on line 19

....som refererer til $headers .= \r\nBcc: $_POST['customer_email'];

I øvrigt skal der hentes info fra et input med name="email". Hvis jeg retter
kodelinjen til

$headers .= \r\nBcc: $_POST['email'];

....får jeg dise fejlmeldinger:

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in
d:\home\hjemmesideskoldk\www\scripts\phpmailsender2.php on line 19

Parse error: parse error, unexpected T_STRING in
d:\home\hjemmesideskoldk\www\scripts\phpmailsender2.php on line 19

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Bertel Lund Hansen (09-12-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 09-12-04 07:50

Erik Ginnerskov skrev:

>Testet, det kan den ikke li'. Den ville have den lange version af

> "From: ".$_POST['name']."<".$_POST['email'].">"

Nu fik jeg lige prøvet noget tilsvarende af selv. Det var min
fejl. Systemvariable af typen $_POST['xyz'] skal stå uden for
anførselstegnene.

>I øvrigt skal der hentes info fra et input med name="email". Hvis jeg retter
>kodelinjen til

> $headers .= \r\nBcc: $_POST['email'];

>...får jeg dise fejlmeldinger:

> Warning: Unexpected character in input: '\' (ASCII=92)

Det er bagstregen den ikke kan lide. Der skal dobbelte
anførselstegn om udtrykket, og så skal POST-variablen skilles ud
også her:

$headers .= "\r\nBcc: ".$_POST['email'];

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Erik Ginnerskov (09-12-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 09-12-04 16:14

Bertel Lund Hansen wrote:

> Nu fik jeg lige prøvet noget tilsvarende af selv. Det var min
> fejl. Systemvariable af typen $_POST['xyz'] skal stå uden for
> anførselstegnene.
>
>> I øvrigt skal der hentes info fra et input med name="email". Hvis
>> jeg retter kodelinjen til
>
>> $headers .= \r\nBcc: $_POST['email'];
>
>> ...får jeg dise fejlmeldinger:
>
>> Warning: Unexpected character in input: '\' (ASCII=92)
>
> Det er bagstregen den ikke kan lide. Der skal dobbelte
> anførselstegn om udtrykket, og så skal POST-variablen skilles ud
> også her:
>
> $headers .= "\r\nBcc: ".$_POST['email'];

Nu spiller det, tak for hjælpen.

Det færdige kan ses og testes på

http://hjemmesideskolen.dk/scripts/phpmail.php

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Erik Ginnerskov (09-12-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 09-12-04 16:38

Erik Ginnerskov wrote:

> Nu spiller det, tak for hjælpen.
>
> Det færdige kan ses og testes på
>
> http://hjemmesideskolen.dk/scripts/phpmail.php

En enkelt lille hage, men det har vist ikke noget med det nye at gøre:

Hvis man indtaster en ' i tekstfeltet, smider php-scriptet en \ ind foran.
Hvorfor gør det det og er det noget, der kan undgås?

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Tommy Ipsen (09-12-2004)
Kommentar
Fra : Tommy Ipsen


Dato : 09-12-04 23:06

Erik Ginnerskov wrote:

> En enkelt lille hage, men det har vist ikke noget med det nye at gøre:
>
> Hvis man indtaster en ' i tekstfeltet, smider php-scriptet en \ ind foran.
> Hvorfor gør det det og er det noget, der kan undgås?

Fra: http://dk.php.net/stripslashes

"An example use of stripslashes() is when the PHP directive
magic_quotes_gpc is on (it's on by default), and you aren't inserting
this data into a place (such as a database) that requires escaping. For
example, if you're simply outputting data straight from an HTML form."

Mvh Tommy

Erik Ginnerskov (09-12-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 09-12-04 23:43

Tommy Ipsen wrote:
>> Hvis man indtaster en ' i tekstfeltet, smider php-scriptet en \ ind
>> foran. Hvorfor gør det det og er det noget, der kan undgås?
>
> Fra: http://dk.php.net/stripslashes

Det har jeg nu forsøgt mig med, uden at det ændrede noget:

http://hjemmesideskolen.dk/scripts/phpmail2.php

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Erik Ginnerskov (16-12-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 16-12-04 00:09

Erik Ginnerskov wrote:

> Hvis man indtaster en ' i tekstfeltet, smider php-scriptet en \ ind
> foran. Hvorfor gør det det og er det noget, der kan undgås?

Fandt selv løsningen:

stripslashes(strip_tags($_POST['message'])),

Det virker også, hvis brugeren indtaster \ i tekstfeltet. Det blev førhen
oversat til \\, nu kommer der kun en enkelt \.

http://hjemmesideskolen.dk/scripts/phpmail2.php

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste