Avatar billede DannyMalvang Nybegynder
15. maj 2012 - 10:36 Der er 7 kommentarer og
1 løsning

Send af Mail Formular PHP, mail sendes 2 gange?

Hej Eksperter

Jeg er ved at lave en bestillingsformular til vores kantine, men oplever at mailen sendes to gange når man submitter.

Jeg har lavet en enkelt udgave som har samme problem.

Det foregår på en lokalserver med PHP installeret og PHP.ini ændret så den sender igennem vores Exchange server

Håber der er nogen der kan se hvor det går galt, for jeg kan ikke.

PHP.ini ændringen:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = IP PÅ EXCHANGE SERVER
; http://php.net/smtp-port
smtp_port = 25




HTML Kode:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test send</title>
</head>

<script type="text/javascript"src="send.js"></script>

<body>

<form action="mail2.php" method="post" name="mail" onsubmit="return send()">
  <p>test
    <input type="text" name="test" id="test" />
  </p>
  <p>
    <input type="submit" name="submit" id="submit" value="Submit" />
  </p>
</form>

</body>
</html>




Java Script der tjekker om feltet er udfyldt:

function send()
{

if(document.mail.test.value=="")
{
alert("Du skal udfylde alle felter med *")
return false;
}
    return true;

}



PHP Mail formular:

<?php

// Variabler bliver oprettet ud fra Form

$test = $_POST['test'];

$to  = 'til@test.com';
$subject = "$test";

// Email i HTML Kode
$message = "
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>Kantine Bestilling</title>

<table>
<tr>
<td>Test:</td>
<td>$test</td>
</tr>
";

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

$email = ('fra@test.com') ;
$headers .= "From: fra@test.com" . "\r\n";;

// Koden der reelt sender mailen
mail($to, $subject, $message, $headers);

$sent = mail($to, $subject, $message, $headers) ;
if($sent)
{print "Bestillingen bev sendt"; }
else
{print "Der skete en fejl med bestillingen"; }
?>
Avatar billede erikjacobsen Ekspert
15. maj 2012 - 10:40 #1
Det skyldes vel disse to linier:

mail($to, $subject, $message, $headers);

$sent = mail($to, $subject, $message, $headers) ;
Avatar billede michael_stim Ekspert
15. maj 2012 - 10:48 #2
Jep, som Erik skriver, drop den første.
Avatar billede DannyMalvang Nybegynder
15. maj 2012 - 11:18 #3
Takker, det løste problemet, jeg ved ikke lige hvordan jeg overså dette.
Avatar billede DannyMalvang Nybegynder
15. maj 2012 - 11:19 #4
Smid nogle svar for point
Avatar billede erikjacobsen Ekspert
15. maj 2012 - 11:20 #5
Ingen point til mig, tak.
Avatar billede michael_stim Ekspert
15. maj 2012 - 11:37 #6
Og jeg kører på Eriks linje, læg selv et svar og accepter dit eget svar, så spørgsmålet bliver lukket.

Desuden gav jeg bare Erik ret. Havde åbnet spørgsmålet og skulle svare, men noget kom i vejen. Så da jeg kom tilbage, så jeg Erik allerede havde løst problemet (for en gang skyld opdaterede jeg før jeg svarede).
Avatar billede DannyMalvang Nybegynder
15. maj 2012 - 11:41 #7
OK tak for hjælpen
Avatar billede michael_stim Ekspert
15. maj 2012 - 11:46 #8
Tip:
"Java Script der tjekker om feltet er udfyldt:"...
Er helt OK for brugervenlighedens skyld, men jeg ville lige tjekke serverside også, for din egen skyld.
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