Avatar billede jdjensen Juniormester
20. december 2011 - 14:14 Der er 1 løsning

Formular sendt til email (samme side)

Hej,

Jeg har en formular på min side der består af disse formfelter:
- Fullname (textfield)
- Phone (textfield)
- Emailaddress (textfield)
- Website (textfield)
- Subject (drop-down)

Jeg vil gerne at når brugeren trykker på "submit", så sker der følgende 3 actions fra samme side:
- En email bliver sendt til mig med de indtastet data
- En bekræftelse (tekst) bliver vist lige ovenover 'firstname' feltet, "Din besked blev sendt".
- Min Google Analytics conversion-kode (et stykke javascript) bliver kørt.

Jeg vil gerne have det hele sker på samme side (altså så jeg slipper for at skulle lave en seperat bekræftelsesside). Jeg ved ikke helt hvordan dette laves i best practice så håber jeg kan få lige hjælp.

(Ang. validering så har jeg lavet dette på mine formfelter før brugeren trykker på submit.)

Håber der er en der vil hjælpe mig på vej. :)
Avatar billede jdjensen Juniormester
20. december 2011 - 15:55 #1
Okay jeg har løst det meste selv nu med PHP_Self funktionen og kan lukke tråden. Med nedenstående kan jeg foretage alle 3 actions fra samme side. Eneste jeg er lidt bekymret om er om der eventuelt burde være noget ekstra validering på de værdier jeg henter ind med $_POST for at undgå eventuelle PHP-exploits. Jeg har dog husket at bruge htmlentities() funktionen i min form action som skulle være meget vigtig.

Et andet problem jeg arbejder på er hvorfor emailen jeg modtager ikke er HTML. Den omsætter ikke html tags som <b> til fed skrift. :)

KODEN:

<!-- Contact: Begin -->
<?php
if(!isset($_POST['submit']))
{
?>

<h2>Overskrift</h2>
<hr />

<div id="sidebar-contact">
<form class="form" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<fieldset>
   
<div class="RegisterErrors" style="display:none"></div>
<input type="text" name="fullname" id="name" class="text" value="Navn" title="Navn">
<input type="text" name="phone" id="phone" class="text" value="Tlf. nr." title="Tlf. nr.">
<input type="text" name="emailaddress" id="emailaddress" class="text" value="Email" title="Email">
<input type="text" name="website" id="website" class="text" value="Website" title="Website">
<select name="subject" id="subject" class="select">
        <option value="">Emne... </option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
</select>

<input type="submit" name="submit" class="button" value="Send" />

</fieldset>
</form>
   
</div>
   
<?
}
else {    

// Get values from form
$fullname = $_POST['fullname']; // textfield
$phone = $_POST['phone']; // textfield
$emailaddress = $_POST['emailaddress']; // textfield
$website = $_POST['website']; // textfield
$subject = $_POST['subject'];
   
//change this to your email.
$to = "test@mail.dk";
$from = "kontakt@domain.dk";
$subject = "$subject";
   
//begin of HTML message
$message = "<html>
<body bgcolor=\"#DCEEFC\">
<center>
<b>Navn:</b> $fullname <br>
<b>Tlf nr.:</b> $phone <br>
<b>Email:</b> $emailaddress <br>
<b>website:</b> $website <br>
<b>Emne:</b> $subject <br>
</center>
</body>
</html>";

// To send the HTML mail we need to set the Content-type header.
$headers = "MIME-Version: 1.0rn";
$headers .= "Content-type: text/html; charset=iso-8859-1rn";
$headers  .= "From: $from\r\n";
   
//options to send to cc+bcc
//$headers .= "Cc: maa@p-i-s.cXom";
//$headers .= "Bcc: email@maaking.cXom";
       
// now lets send the email.
mail($to, $subject, $message, $headers);
   
?>

<h2>Bekræftelse</h2>
<hr />
   
<div id="sidebar-contact">
<div class="Confirmation">Besked sendt.</div> 
</div>

<!-- GOOGLE ANALYTICS: BEGIN -->
<!-- GOOGLE ANALYTICS: END -->

<?
}
?>
<!-- Contact: End -->
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