Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
630 views
in Technique[技术] by (71.8m points)

email - php mail() two copies sent

I have a simple message that I send using php mail(). The code used:

//recipient info
$to = "$bookernavn <$mail>";
$from = "Visens Venner Hiller?d <[email protected]>";
$subject = "Kvittering - $a_titel - ". date("j/n - Y",$a_dato);

$headers  = "MIME-Version: 1.0" . "
";
$headers .= "Content-type: text/html; charset=utf-8" . "
";
$headers .= "From: $from" . "
";
$headers .= "Reply-To: $from" . "
";
$headers .= "Return-Path: $from" . "
";
$headers .= "Bcc: $from" . "
";

// now lets send the email. 
mail($to, $subject, $mailmsg, $headers); }

For some strange reason two mails are sent each time...
Sometimes with several minutes in between...
Any ideas?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You don't check to see if the form has been submitted so a browser refresh will send the form data again and cause the mail to be sent again. This also happens when a user presses the back button.

After the email is sent you need to do a 303 redirect to prevent the re-submission. You can redirect to the same page if you'd like.

This is called the Post/Redirect/Get pattern.

mail(...);
header('Location: /some-page-php', true, 303);
exit;

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...