PDA

Bekijk Volledige Versie : [PHP] Afzender bij formulier



Elwin [a.k.a. SpaceFrog]
23/01/03, 23:35
Beste allemaal,

Sinds kort ben ik bezig met PHP en nu zit ik met het volgende:
Om een formuliertje door te sturen gebruik ik de regel

mail("$adres", "$onderwerp", "$body");

waarbij $adres mijn e-mailadres is en de $body van het mailtje al eerder is
samengesteld uit meedere variabelen.

Als ik het mailtje binnen krijg dan staat als afzender en als adres het
e-mailadres van de root van mijn host.

Ik zou graag zien dat de afzender $naam en het e-mailadres $adres (beide uit
het form) wordt. Is dat te doen in het PHP-script, of is dat een
server-instelling?

Alvast bedankt,
Elwin

David Baakman
23/01/03, 23:45
In article <b0pqcc$1g3u$1@nl-news.euro.net>, spacefrog@propaneNOSPAM.nl
says...
> Beste allemaal,
>
> Sinds kort ben ik bezig met PHP en nu zit ik met het volgende:
> Om een formuliertje door te sturen gebruik ik de regel
>
> mail("$adres", "$onderwerp", "$body");
>
> waarbij $adres mijn e-mailadres is en de $body van het mailtje al eerder is
> samengesteld uit meedere variabelen.
>
> Als ik het mailtje binnen krijg dan staat als afzender en als adres het
> e-mailadres van de root van mijn host.
>
> Ik zou graag zien dat de afzender $naam en het e-mailadres $adres (beide uit
> het form) wordt. Is dat te doen in het PHP-script, of is dat een
> server-instelling?

Dat kan je doen door extra headers mee te sturen. Zie bijvoorbeeld
http://www.php.net/manual/en/function.mail.php (en dan vooral de user
contributed notes).

Je krijgt dan bijvoorbeeld iets als (niet getest):

$headers = "From: $naam <$adres>\n";
mail("$adres", "$onderwerp", "$body", $headers);

Of je nou \n of \r\n moet gebruiken om headers te scheiden kan je veel
over lezen, maar het makkelijkste is gewoon proberen wat wel en niet
werkt. Dat is volgens mij compleet afhankelijk van de mailserver.

David

Rene Pijlman
23/01/03, 23:55
Elwin [a.k.a. SpaceFrog]:
[PHP form->mail]
>Als ik het mailtje binnen krijg dan staat als afzender en als adres het
>e-mailadres van de root van mijn host.
>
>Ik zou graag zien dat de afzender $naam en het e-mailadres $adres (beide
>uit het form) wordt. Is dat te doen in het PHP-script

Yep, je kunt headers meegeven via de 4e parameter van de mail
functie.

Wat snippets uit een van mijn eigen scripts:

$additional_headers = "From: $naam <$email>";
if (!mail($to, $subject, $message, $additional_headers) )
{
/* Oops */

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Elwin [a.k.a. SpaceFrog]
24/01/03, 00:05
"Rene Pijlman" <reageer.in@de.nieuwsgroep> schreef:

> Elwin [a.k.a. SpaceFrog]:
> [PHP form->mail]

> >Als ik het mailtje binnen krijg dan staat als afzender en als adres het
e-
> >mailadres van de root van mijn host.
> >
> >Ik zou graag zien dat de afzender $naam en het e-mailadres $adres (beide
> >uit het form) wordt. Is dat te doen in het PHP-script

> Yep, je kunt headers meegeven via de 4e parameter van de mail
> functie.
>
> Wat snippets uit een van mijn eigen scripts:
>
> $additional_headers = "From: $naam <$email>";
> if (!mail($to, $subject, $message, $additional_headers) )
> {
> /* Oops */

Geweldig.. :D Het werkt! En dan te bedenken dat ik het eerst, voordat ik de
vraag het in de groep stelde, als eerste parameter heb geprobeerd, dus alles
één opgeschroven...

Ik heb ook nog die tip van David geprobeerd, maar daar kreeg ik een
parse-error bij

"From: webmaster@$SERVER_NAME\r\n"

Hij struikelde over de \ . Maar goed.. Het werkt en daar gaat het om!
Bedankt!

> --
> René Pijlman
>
> Wat wil jij leren? http://www.leren.nl

Elwin

Daniel Tryba
24/01/03, 00:15
Elwin [a.k.a. SpaceFrog] <spacefrog@propanenospam.nl> wrote:
> Ik zou graag zien dat de afzender $naam en het e-mailadres $adres (beide uit
> het form) wordt. Is dat te doen in het PHP-script, of is dat een
> server-instelling?

Je kunt (zoals David en Rene al opmerkten) een From: spoofen met de 4de
parameter van mail, echter dan komt het uiteindelijke mailtje nog altijd
van de user welke php draaid op de webserver, bv:
From www-data@host.tld Thu Jan 9 10:25:58 2003
From: Spoofed <iemand@anders.tld>
Sender: www-data <www-data@host.tld>

Met de 5de parameter (zie example 3 op
http://www.php.net/manual/en/function.mail.php) kan je de envelope from dus
op een gewenste waarde zetten _mits_ 'sendmail' daarvoor is geconfigureerd.
De Sender: header zal dan ook verdwijnen. Maar in de meeste gevallen zullen
de reeds aangedragen oplossing van de 4e para. voldoende zijn.

--

Daniel Tryba

Rene Pijlman
24/01/03, 10:15
Elwin [a.k.a. SpaceFrog]:
>Ik heb ook nog die tip van David geprobeerd, maar daar kreeg ik een
>parse-error bij
>
>"From: webmaster@$SERVER_NAME\r\n"
>
>Hij struikelde over de \ .

Die (\r)\n dient om headers te scheiden. Als er maar 1 header is
moet je die dus niet toevoegen. Dat is een klein foutje in de
voorbeeldcode van David.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Rene Pijlman
24/01/03, 10:35
Daniel Tryba:
>Je kunt (zoals David en Rene al opmerkten) een From: spoofen met de 4de
>parameter van mail, echter dan komt het uiteindelijke mailtje nog altijd
>van de user welke php draaid op de webserver, bv:
>From www-data@host.tld Thu Jan 9 10:25:58 2003
>From: Spoofed <iemand@anders.tld>
>Sender: www-data <www-data@host.tld>

Klopt (afhankelijk van de configuratie van het mailsysteem),
maar dit is toch niet zo'n probleem?

De "From:" header is de afzender op applicatie/gebruikersniveau
(te vergelijken met de afzender in een briefhoofd), de andere
headers hebben te maken met de technische verzending (te
vergelijkem met de afzender en transportstempels op een
enveloppe).

De "From:" header wordt zo vanuit het PHP-script ingevuld, de
andere headers door het mailsysteem en dat lijkt me op zich OK.

Een kleine subtiliteit is dat een reply naar de afzender gaat
(correct), maar een bounce naar het technische adres
(www-data@host.tld). Dat zou je als een probleem kunnen zien.

>Met de 5de parameter (zie example 3 op
>http://www.php.net/manual/en/function.mail.php) kan je de envelope from dus
>op een gewenste waarde zetten _mits_ 'sendmail' daarvoor is geconfigureerd.

Maar op diezelfde pagina staat: "Since PHP 4.2.3 this parameter
is disabled in safe_mode".

Op servers die ik zelf beheer doe ik het inderdaad vaak zo:

if (!mail($to, "$subject", "$message", "From: $from", "-f
$from"))

Maar op servers van derden heeft dit soms niet het beoogde
effect vanwege de configuratie van PHP en/of sendmail.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl