Avatar billede LittleNerd Nybegynder
18. januar 2013 - 19:32 Der er 12 kommentarer og
1 løsning

fra form til email

Jeg har en kontakt form her som jeg gerne vil havde sender en mail med hvad der er blevet skrevet i de forskellige felter, men ved ikke lige helt hvordan jeg skal gøre.


<form name="kontakt_form" action="" method="POST" onsubmit="return kontaktvalidering()">   
           
            <p>Dit Fuldenavn:<br />
            <input type="text" name="navn" placeholder="Fuldenavn" /><br/></p>
       
            <p>Dit Telefon Nr.:<br />
            <input type="text" name="telefon" placeholder="Telefonnr." /><br/></p>
       
            <p>Din E-mail:<br />
            <input type="text" name="email" placeholder="E-mail" /></p>
           
            <p>Din besked<br />
            <textarea id="textarea" name="besked" placeholder="Skriv besked"></textarea></p>
           
            <input type="submit" title="Klik for at sende" id="submit_knap" value="Send" name="submit" />               
                           
        </form>
Avatar billede olsensweb.dk Ekspert
18. januar 2013 - 20:18 #1
har du prøvet at google php formmail ??
http://www.udvikleren.dk/artikler/252/formmail-med-php/
http://hjemmesideskolen.dk/scripts/phpmail.php

hvordan ser din PHP del ud ??

husk at validere din input data serverside også, JS kan slåes fra, kan fejle, kan manipuleres.
validering client side for brugerens skyld
validering serverside for din og serverens sikkerheds skyld
Avatar billede scootergrisen Nybegynder
18. januar 2013 - 20:58 #2
Du skal have et webhotel med adgang til for eksempel PHP.
Så kan du gøre sådan her : http://netkoder.dk/netkoder/kode_email.php

Hvis ikke du har webhotel med PHP eller ligende så kan du bruge en formmail som andre stiller tilrådighed som http://www.hostedscripts.dk/formmail/ men det en mindre god løsning fordi du har ikke så meget kontrol.
Avatar billede LittleNerd Nybegynder
28. januar 2013 - 15:46 #3
jeg fandt en, den virker næsten, den sender mail men den gider ikke at tage indholdet at der der står i input felterne.

                <form name="kontakt_form" action="" method="POST" onsubmit="return kontaktvalidering()">   

                <b><p>Dit Fuldenavn:<br /></b>
                <input type="text" name="navn" placeholder="Fuldenavn" /><br/><br /></p>

                <b><p>Dit Telefon Nr.:<br /></b>
                <input type="text" name="telefon" placeholder="Telefonnr." /><br/><br/></p>

                <b><p>Din E-mail:<br /></b>
                <input type="text" name="email" placeholder="E-mail" /><br/><br/></p>

                <b><p>Din besked<br /></b>
                <textarea id="textarea" name="besked" placeholder="Skriv besked"></textarea></p>
               
                <br />
               
                <input type="submit" title="Klik for at sende" id="submit_knap" value="Send" name="submit" />               

            </form>


<?php
$msg="";
$navn = "$navn";
if(isset($_POST['submit']))
{
    $from_add = "form@camillamagnussen.com";
    $to_add = "camo_m@hotmail.com";
   
    $subject = "Kontakt fra hjemmeside";
    $message = "$navn";
   
    $headers = "From: $from_add \r\n";
    $headers .= "Reply-To: $from_add \r\n";
    $headers .= "Return-Path: $from_add\r\n";
    $headers .= "X-Mailer: PHP \r\n";
   
   
    if(mail($to_add,$subject,$message,$headers))
    {
        $msg = "Besked sendt";
    }
    else
    {
      $msg = "Fejl ved sending af beskeden!";
    }
}
?>
Avatar billede scootergrisen Nybegynder
28. januar 2013 - 16:35 #4
Det er vel ikke så mærkeligt eftersom du ikke henter værdien af nogen af input felterne.
Avatar billede LittleNerd Nybegynder
28. januar 2013 - 16:56 #5
det ved jeg men det var lidt mere hvordan jeg skulle lave det har prøvet på nogle forskellige måder men kan ikke lige finde ud af det
Avatar billede scootergrisen Nybegynder
28. januar 2013 - 19:06 #6
Du kan prøve og læse den side jeg linkede til.
Avatar billede LittleNerd Nybegynder
28. januar 2013 - 19:28 #7
har prøvet den men den gider ikke
Avatar billede scootergrisen Nybegynder
29. januar 2013 - 13:40 #8
Prøv og kom med koden der ikke gider og forklar problemet.
Bruger du Windows ?
Avatar billede LittleNerd Nybegynder
29. januar 2013 - 17:31 #9
ja jeg bruger windows, plus det er hele koden som ikke virker, den sider beskeden er sendt men får ikke noget til min mail.


<?php
$tilemail = "camo_m@hotmail.com";

if(isset($_POST["opgave"]) && $_POST["opgave"] == "kontakt"){

  if(sendemail($_POST["emne"], $_POST["kommentar"], $tilemail)){

      echo beskedenblevsendt(true);

  }else{

      echo beskedenblevsendt(false);

  }

}else{

  echo '<form method="post" action="' . $_SERVER['SCRIPT_NAME'] . '" enctype="multipart/form-data">' . "\r\n";
  echo '<input type="hidden" name="opgave" value="kontakt">' . "\r\n";
  echo '<input type="hidden" name="emne" value="besked sendt fra hjemmesiden">' . "\r\n";

  echo '<label for="formularafsender">Afsender:<br>' . "\r\n";
  echo '<input id="formularafsender" type="text" name="afsender" value="" size="40">' . "\r\n";
  echo '</label><br>' . "\r\n";

  echo '<label for="formularbesked">Besked:<br>' . "\r\n";
  echo '<textarea id="formularbesked" name="kommentar" cols="40" rows="15"></textarea>' . "\r\n";
  echo '</label><br>' . "\r\n";

  echo '<input type="submit" name="submit" value="Send besked"><br>' . "\r\n";
  echo '</form>' . "\r\n";

}



function sendemail($emne, $besked, $til = "", $fra = ""){

  $headers = "";

  if($fra != ""){

      $headers .= "From: " . $fra . " <" . $fra . ">" . "\r\n";

  }else{

      $headers .= "From: " . $til . " <" . $til . ">" . "\r\n";

  }

  $headers .= "Content-type: text/plain; charset=utf-8\r\n";

  //$besked = wordwrap($besked, 70); // må åbenbart kun være 70 tegn bred
  $besked = str_replace("\r\n", "\n", $besked); // skal åbenbart kun have \n som linieskift
  $besked = str_replace("\n.", "\n..", $besked); // windows fjerner linier som begynder med punktum
  $besked = str_replace("<br>", "\r\n", $besked); // lav <br> om til linieskift


  if(mail($tilemail, $emne, $besked, $headers)){

    return true;

  }else{

      return false;

  }

}

function beskedenblevsendt($handling){

  $indhold = "";

  if($handling){

      $indhold .= "Beskeden blev sendt.";

  }else{

      $indhold .= "Beskeden blev af en eller anden grund ikke sendt." . "\r\n";

      if(isset($_POST["kommentar"]) && $_POST["kommentar"] != ""){

        $indhold .= '<form>' . "\r\n";
        $indhold .= '<textarea cols="40" rows="15">' . $_POST["kommentar"]. '</textarea>' . "\r\n";
        $indhold .= '</form>' . "\r\n";

      }

  }

  $indhold .= "\r\n";

  return $indhold;

}
?>
Avatar billede olsensweb.dk Ekspert
03. februar 2013 - 14:11 #10
har du prøvet at slå fejl visning til ??

sæt dette ind i toppen af din php fil
error_reporting(-1);

når det virker og du sætter det i produktion rettes det til
error_reporting(0);

http://php.net/manual/en/function.error-reporting.php
http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting

man bør ikke udvikle uden at have slået fejl visning til, og anvende udviklings værktøjerne i ens browser.

hvis du slåer den til vil du se du i functionen sendemail, har en variabel der ikke er defineret inde i dit scope for functionen
prøv at rette
if(mail($tilemail, $emne, $besked, $headers)){

til
if(mail($til, $emne, $besked, $headers)){

nb: spørgsmålet havde nok været bedre placeret i
php gruppen
Avatar billede LittleNerd Nybegynder
03. februar 2013 - 14:20 #11
jeg har fundet ud af det
Avatar billede LittleNerd Nybegynder
03. februar 2013 - 14:21 #12
det var takket være det du sagde jeg kunne søge på ronols
Avatar billede LittleNerd Nybegynder
01. marts 2013 - 10:13 #13
lukket
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
Computerworld tilbyder specialiserede kurser i database-management

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