Avatar billede KennethDanielsen Nybegynder
17. marts 2010 - 00:43 Der er 13 kommentarer og
1 løsning

HTML med PHP Contact Form

Hejsa,

Til mit nye website har jeg lavet en unik contact form, og har nu brug for hjælp til at programmere selve php koden i formens action.

Der skal altså være en separat HTML og PHP.

Jeg har i alt 6 felter, 1 checkbox og 1 submit knap, fordelt således:

- Navn (*)
- Virksomhed
- Email Adresse (*)
- Telefonnummer
- Emne (*)
- Besked (*)

- Kopi af emailen (checkbox)

Meningen er at alle felter med (*) skal udfyldes, og er checkboxen krydset af, skal mailen også sendes til adressen i feltet Email Adresse.

Hvis felterne med (*) ikke er udfyldt, skal en pop op komme med beskeden "Du skal udfylde alle felterne med *".

------------------------------------------------------------------


HTML koden ser således ud:

<form action="send_email.php" method="POST" id="form">
     
  <p>Fulde Navn*<br /><input name="name" type="text"
  id="name" /></p>

  <p>Virksomhed:<br /><input name="firm" type="text"
  id="firm" /></p>
       
  <p>Email Adresse*<br /><input name="email" type="text"
  id="email" /></p>

  <p>Telefonnummer:<br /><input name="phone"
  type="text" id="phone" /></p>
         
  <p>Emne* <br /> <input name="subject" type="text"
  id="subject" /><br /></p>
     
  <p>Besked* <br /> <textarea name="message" id="message">

  <p><input type="checkbox" value="kopi" /> Vil du have en kopi af
  mailen?</p>
         
  <input type="submit" id="sendbesked" value="Send Besked">

       
</form>


Nogle der kan klare selve send_email.php filen for mig?
Avatar billede repox Seniormester
17. marts 2010 - 08:29 #1
Var det ikke nemmere hvis du forklarede i dit oprindelige spørgsmål ( http://www.eksperten.dk/spm/904546 ) hvad det er du ikke kan få til at virke?
Avatar billede KennethDanielsen Nybegynder
17. marts 2010 - 12:07 #2
Jamen fik det ikke til at virke.. Vil gerne ha en separat html og php fil. I html'en skal form action refere til php filen.

Og har prøvet frem og tilbage, og kan sgu ikke få det til at virke.. Så skal ha en til at lave php'en for mig..
Avatar billede bjarnehansen Seniormester
17. marts 2010 - 12:14 #3
Hej
er det noget i stil med dette:
http://www.bjarne-hansen.dk/kontakttest.php
Avatar billede repox Seniormester
17. marts 2010 - 12:23 #4
Du kan bare dele det op, men så får du bare ingen dynamik i din HTML fil.
send_email.php
<?php

    if( isset($_POST["name"]) )
    {
        $name = $_POST["name"];
        $firm = $_POST["firm"];
        $email = $_POST["volapyk"];
        $phone = $_POST["phone"];
        $subject = $_POST["subject"];
        $message = $_POST["message"];
        $copy = ( isset($_POST["copy"]) ) ? true : false;
       
        if( strlen($name) == 0 || strlen($email) == 0 || strlen($subject) == 0 || strlen($message) == 0 )
            $error = true;
                   
        $headers = "From: ".$name." <".$email.">\r\n";
       
        $body = "Navn: ".$name."\n";
        $body .= "Virksomhed: ".$firm."\n";
        $body .= "E-mail: ".$email."\n";
        $body .= "Telefon: ".$phone."\n\n";
        $body .= $message;
       
       
       
        if( strlen($_POST["email"]) == 0 && !isset($error) )
        {
            mail("din-email-adresse@example.org", $subject, $body, $headers);
       
            if($copy)
                mail($email, $subject, $body, $headers);
               
       
        }
       
       
    }

?>
<?php if( isset($error) ): ?>
Skriv din HTML 'Ikke alle felter var udfyldt' her...
<?php else: ?>
Skriv din HTML 'tak for beskeden' her...
<?php endif; ?>


Og din form kan du jo så sætte ind hvor du vil:
<form action="send_email.php" method="POST" id="form">
     
  <p>Fulde Navn*<br /><input name="name" type="text" id="name" /></p>

  <p id="hojre">Virksomhed:<br /><input name="firm" type="text" id="firm" /></p>
     
  <br />
  <br />
         
  <p>Email Adresse*<br /><input name="volapyk" type="text" id="volapyk" /></p>
 
  <!-- Spamsikring -->
  <p style="display: none;">Email<br /><input name="email" type="text" id="email" /></p>
 

  <p id="hojre">Telefonnummer:<br /><input name="phone" type="text" id="phone" /></p>
     
  <br />
  <br />
         
         
  <p>Emne* <br /> <input name="subject" type="text" id="subject" /><br /></p>
     
  <br />
  <br />
         
  <p>Besked* <br /> <textarea name="message" id="message">
Avatar billede repox Seniormester
17. marts 2010 - 12:25 #5
Suk... HTML formularen igen:
<form action="send_email.php" method="POST" id="form">
   
  <p>Fulde Navn*<br /><input name="name" type="text" id="name" /></p>

  <p id="hojre">Virksomhed:<br /><input name="firm" type="text" id="firm" /></p>
     
  <br />
  <br />
         
  <p>Email Adresse*<br /><input name="volapyk" type="text" id="volapyk" /></p>
 
  <!-- Spamsikring -->
  <p style="display: none;">Email<br /><input name="email" type="text" id="email" /></p>
 

  <p id="hojre">Telefonnummer:<br /><input name="phone" type="text" id="phone" /></p>
     
  <br />
  <br />
         
         
  <p>Emne* <br /> <input name="subject" type="text" id="subject" /><br /></p>
     
  <br />
  <br />
         
  <p>Besked* <br /> <textarea name="message" id="message"></textarea>
  <br />
  <br />
  <br>


  <p><input type="checkbox" name="copy" value="kopi" /> Vil du have en kopi af
  mailen?</p>
         
  <input type="submit" id="sendbesked" value="Send Besked">

       
</form>
Avatar billede KennethDanielsen Nybegynder
17. marts 2010 - 12:53 #6
Tester den lige når jeg kommer hjem idag.. Men lige 3 spørgsmål:

----------------------------------------------------------------------------

Hvordan finder php filen ud af hvilket element i html'en der udgør f.eks. "navn"? Er det ud fra id?
Eller skal jeg tilføje noget i html'en?

Hvordan virker den spamsikring du har skrevet i html koden?

Hva mener du med at der ikke kommer noget dynamik i min html?
Avatar billede repox Seniormester
17. marts 2010 - 13:29 #7
1.
PHP's superglobale variabel kaldet $_POST indeholder alle form felter som bliver sendt med fra HTML siden og navngives ud fra attributten 'name'.
<input type="text" name="foo" />
Bliver til $_POST["foo"]
<input type="text" name="bar" />
Bliver til $_POST["bar"]

2.
Den virker ved at det kun er robotter der ser ser inputfeltet. Ved at navngive det generisk (som f.eks. 'email') vil de fleste robotter vælge at udfylde feltet.
Idet feltet udfyldes, vil der ikke blive sendt en mail. Simpelt, men effektivt.

3.
PHP skaber dynamisk indhold - altså det modsatte af statisk. En HTML side er bare statisk; du kan ikke få den til at reagere på noget serverside scripting. Du kan selvfølgelig lave validering gennem javascript, men det virker jo ikke altid...
Avatar billede bjarnehansen Seniormester
17. marts 2010 - 17:04 #8
Hej igen
prøv dette link er det noget af det du leder efter?
http://www.bjarne-hansen.dk/test/kontakttest2.php
Avatar billede bjarnehansen Seniormester
17. marts 2010 - 17:36 #9
Hej
prøv denne kode husk at sætte din egen mail ind i $til feltet
mangler kun at få rettet meldingen om at mail er sendt eller der er sket en fejl til
<?
/*
##############################################################################
# Kontakt-script                                                  Version 3 #
# Copyright 2010 Bjarne Hansen                  bjarne-hansen@worldonline.dk #
# Udviklet d. 17/03/10                                                      #
##############################################################################
*/
?>
<html>
<head>
<title>Kontakt</title>
<link href="file:///C|/DOCUME%7E1/BJARNE%7E1/LOKALE%7E1/Temp/_tc/kontakt/kontakt/style/style.css" rel="stylesheet" type="text/css">
<script language="JavaScript">
<!--
    function CheckForm () {
       
    //kontroller at navn er udfyldt
    if (document.mail.navn.value == ""){
        alert("Skriv venligst dit navn");
        document.mail.navn.select();
        document.mail.navn.focus();
        return false
    }

    //kontroller at email er udfyldt og indeholder @ og punktum
    if (document.mail.mail.value.indexOf('@') == '-1' ||
        document.mail.mail.value.indexOf('.') == '-1') {
        alert("Check venligst din e-mail adresse");
        document.mail.mail.select();
        document.mail.mail.focus();
        return false
    }
   
    //kontroller at emne er udfyldt
    if (document.mail.emne.value == ""){
        alert("Skriv venligst et emne");
        document.mail.emne.select();
        document.mail.emne.focus();
        return false
    }
   
    //kontroller at besked er udfyldt
    if (document.mail.besked.value == ""){
        alert("Skriv venligst en besked");
        document.mail.besked.select();
        document.mail.besked.focus();
        return false
    }   
        return true
}
//-->
</script>
<style type="text/css">
<!--
.style2 {font-family: "Comic Sans MS"}
-->
</style>
</head>

<body bgColor=#F8A315 text="#600B00" vlink="#ffffff" bgproperties="fixed" alink="#FF8000" link="#ffffff">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td height="50%" align="center"><div align="center"><font face="Comic Sans MS"><u><font size="4">Kontakt
        Side.<br>
        <br>
        </font></u></font></div>
      <div align="left"><font face="Comic Sans MS">Hvis du &oslash;nsker at hurtigt
        komme i kontakt med mig du er velkommen til at udfylde formmailen nedunder. </font><strong></strong></div>
        </td>
  </tr>
  <tr>
    <td height="50%" align="center"> <form name="mail" method="post" action="<? echo $PHP_SELF ?>" onSubmit="return CheckForm();" onReset="return confirm('Er du sikker på at du vil slette alt?');">
        <div align="center"> </div>
        <table width="100%" border="0" cellpadding="0" cellspacing="2" class="tabel">
          <tr>
            <td colspan="2" align="right" valign="top"> <hr> </td>
          </tr>
          <tr>
            <td width="27%" align="right" valign="top"><font face="Comic Sans MS">Dit
              Navn:&nbsp;</font></td>
            <td width="73%"><input name="navn" type="text" class="input" size="45"></td>
          </tr>
          <tr>
            <td height="18" align="right" valign="top"><font face="Comic Sans MS">Din
              E-mail:&nbsp;</font></td>
            <td><input name="mail" type="text" class="input" size="45"></td>
          </tr>
          <tr>
            <td height="25" align="right" valign="top"><font face="Comic Sans MS">Emne:&nbsp;</font></td>
            <td valign="top"><input name="emne" type="text" class="input" size="45" value="Beskeb sendt fra hjemmesiden!"></td>
          </tr>
          <tr>
            <td align="right" valign="top"><font face="Comic Sans MS">Besked:&nbsp;</font></td>
            <td><textarea name="besked" cols="60" rows="10" class="textarea"></textarea></td>
          </tr>
          <tr>
            <td align="right" valign="top"><span class="style2">Vil du  ha en kopi af Mailen ?</span></td>
            <td><label>
              <input type="checkbox" name="copy" id="kopi" >
             
            </label></td>
          </tr>
          <tr>
            <td colspan="2"> <div align="center">
                <input name="Submit" type="submit" class="button" value="Send Mail">
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input name="Submit2" type="reset" class="button" value="Reset">
              </div></td>
          </tr>
          <tr>
            <td colspan="2"><div align="center">
                <?
    $mail = $_POST["mail"];
    $headers = "From: " . $_POST["mail"];
    $besked = $_POST["besked"];
    $navn = $_POST["navn"];
    $emne = "Besked fra " . $navn . " : " . $_POST['emne'];
    $til = "din_mail@dit_domæne.dk";
    $besked2 = "Mailen er skrevet af: " . $navn . "\n\n" . $besked;
    $copy = ( isset($_POST["copy"])) ? true : false;
    if ($mail && $besked && $navn) {
        mail($til, $emne, $besked2, $headers);
        if($copy){
        mail($mail, $emne, $besked2, $headers);
        //{
            //echo "Din mail er blevet sendt - tak!";
        //}

        //else {
          //  echo "Der opstod en fejl... mailen er ikke blevet sendt!";
        }
    }
   
?>
              </div></td>
          </tr>
        </table>
        <table width="100%" border="0">
          <tr>
            <td colspan="2"><font face="Comic Sans MS"><font face="Comic Sans MS">
              <hr>
            </font></font></td>
          </tr>
          <tr>
            <TD width="23%">&nbsp;</TD>
            <TD width="77%">&nbsp;</TD>
          </tr>
          <tr>
            <TD>&nbsp;</TD>
            <TD>&nbsp;</TD>
          </tr>
          <tr>
            <TD vAlign=top>&nbsp;</TD>
            <TD>&nbsp;</TD>
          </tr>
          <tr>
            <td colspan="2"> <hr> <div align="center"><font size="1" face="Comic Sans MS"></font></div>
              <div align="center"><font size="1" face="Comic Sans MS">Copyright&nbsp;©
                bjarne-hansen.dk<br>
                Denne side er opdateret den
                <!-- #BeginDate format:Sw1 -->17 March, 2010<!-- #EndDate -->
                </font>
                <hr>
              </div></td>
          </tr>
        </table>
        <p>&nbsp;</p>
      </form></td>
  </tr>
  <tr>
    <td align="center">&nbsp; </td>
  </tr>
  <tr>
    <td align="center">&nbsp; </td>
  </tr>
</table>
</body>
</html>
Avatar billede KennethDanielsen Nybegynder
17. marts 2010 - 19:56 #10
Hej Bjarne, har brugt repox's måde i stedet..

Det virker nu! Men den vil stadig ikke sende en mail tilbage til afsenderen, hvis checkboxen er checked..
Avatar billede KennethDanielsen Nybegynder
17. marts 2010 - 19:57 #11
... og er det muligt at første sætning i mailen er noget i retning af: "Besked fra hjemmeside:" ?
Avatar billede bjarnehansen Seniormester
17. marts 2010 - 22:54 #12
Hej Kenneth
Ok her vil den godt sende en mail tilmodtger og en kopi til afsenderen

Det med besked fra Hjemmesiden er det der stor i emne feltet som man bare kan over skrive og du har ændret $til til din mailadresse hvor den skal sende mailen til

har du 2 mail adreser at teste med evt.
Avatar billede bjarnehansen Seniormester
18. marts 2010 - 10:35 #13
Hej Kenneth
prøv at gå ind på
www.bjarne-hansen.dk
og vælg testside i menuen od se om det er sådan du vil have det
jeg ved godt at den ikke er helt tilpasset din ønsker med telefon og virksomhed men det kan den blive
Avatar billede repox Seniormester
19. marts 2010 - 13:21 #14
#10
Nej, den vil nok ikke virke, for du har sikkert ikke brugt den HTML formular som jeg sendte dig. Din checkbox er nemlig ikke navngivet og vil derfor ikke virke.

#11
Du kan skifte nedenstående ud:
        $body = "Navn: ".$name."\n";
        $body .= "Virksomhed: ".$firm."\n";
        $body .= "E-mail: ".$email."\n";
        $body .= "Telefon: ".$phone."\n\n";
        $body .= $message;

ud med
        $body = "Besked fra hjemmeside:\n";
        $body .= "Navn: ".$name."\n";
        $body .= "Virksomhed: ".$firm."\n";
        $body .= "E-mail: ".$email."\n";
        $body .= "Telefon: ".$phone."\n\n";
        $body .= $message;
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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