Avatar billede mulvad Nybegynder
24. februar 2010 - 16:19 Der er 12 kommentarer og
1 løsning

Håndtering af æ ø og å i kontaktform

Jeg har begået nedenstående kontaktformular og også konstareteret, at den fungerer og sender mails fra hjemmesiden.

Når man indtaster ord, der indeholder æ, ø og å sendes disse imidlertid videre så de fremstår som mystiske tegn i mailen.

Jeg går ud fra, at det er noget med at jeg skal have defineret tegnsættet til UTF-8, men aner ikke hvor jeg skal indsætte den nødvendige information.

Hvis nogen kan hjælpe med dette vil jeg være taknemmelig:

/Henrik

Her er kontaktformen:

<!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 content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta content="da" http-equiv="Content-Language" />
<title>Untitled 1</title>
</head>

<body>
<?php
if (isset($_POST['navn']) && isset($_POST['telefon']))
{
    if (empty($_POST['navn']))
    {
        echo "Du skal indtaste dit navn";
    }
    elseif (empty($_POST['telefon']))
    {
        echo "Du skal indtaste et telefonnummer";
    }
    else
    {
        $modtager = "henrik@lucernevej.dk";
        $emne = "Mail fra kontaktformular på www.tomjensen.dk";
        $besked = "Der er følgende henvendelse fra en bruger på siden www.tomjensen.dk: \n
                            Navn: " . $_POST['navn']. "\n
                            Firma/organisation: " . $_POST['firma']. "
                            Adresse: " . $_POST['adresse']. "
                            Postnummer og by: " . $_POST['postby']. "
                            Telefon: " . $_POST[telefon]. "
                            Email: " . $_POST['email']. "
                            Besked: " . $_POST['besked'];
        $header = "from:kontaktformular@tomjensen.dk";

        mail($modtager, $emne, $besked, $header);
        echo "Emailen er nu sendt!";
    }
}
?>

<form action="kontakt2.php" method="post">
    Navn: <br>
    <input type="text" name="navn" style="width: 200px;"> <br>

    Evt. firma/organisation: <br>
    <input type="text" name="firma" style="width: 200px;"> <br>

    Adresse: <br>
    <input type="text" name="adresse" style="width: 200px;"> <br>

    Postnummer og by: <br>
    <input type="text" name="postby" style="width: 200px;"> <br>

    Telefon: <br>
    <input type="text" name="telefon" style="width: 200px;"> <br>

    email: <br>
    <input type="text" name="email" style="width: 200px;"> <br>


    Besked: <br>
    <textarea name="besked" style="width: 200px; height: 100px;"></textarea> <br>

    <input type="submit" value="Send mail">
</form>
<p>
<img alt="Bubbles and line" height="285" src="logo%20og%20linje%20fitted.jpg" width="1024" /></p>
</body>

</html>
Avatar billede michael_stim Ekspert
24. februar 2010 - 16:35 #1
I din $header:

$header  = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$header .= "from:kontaktformular@tomjensen.dk";
Avatar billede mulvad Nybegynder
24. februar 2010 - 23:24 #2
Hej Michael

Tak for svaret - Det kan godt være at jeg er lidt ny i det, men jeg kan ikke få det til at fungere.

Jeg har indsat de linjer du angiver (se nedenfor), men får stadig volapyk i mailen, når jeg bruger æøå (se eksempel)

Jeg håber at du kan hjælpe mig videre

Ændret form (uddrag)

  $modtager = "henrik@lucernevej.dk";
        $emne = "Mail fra kontaktformular på www.tomjensen.dk";
        $besked = "Der er følgende henvendelse fra en bruger på siden www.tomjensen.dk: \n
                            Navn: " . $_POST['navn']. "
                            Firma/organisation: " . $_POST['firma']. "
                            Adresse: " . $_POST['adresse']. "
                            Postnummer og by: " . $_POST['postby']. "
                            Telefon: " . $_POST[telefon]. "
                            Email: " . $_POST['email']. "
                            Besked: " . $_POST['besked'];
       
        $header  = 'MIME-Version: 1.0' . "\r\n";
        $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
        $header = "from:kontaktformular@tomjensen.dk";

Resultat fra mail i outlook:

Der er følgende henvendelse fra en bruger på siden www.tomjensen.dk:

                            Navn: æøå
                            Firma/organisation: æøå
                            Adresse: æåø
                            Postnummer og by: æøå
                            Telefon: æøå
                            Email: æøå
                            Besked: æøå
Avatar billede mulvad Nybegynder
24. februar 2010 - 23:30 #3
Jeg har også forsøgt at sætte charset til UTF-8 men det gav samme resultat.
Avatar billede michael_stim Ekspert
24. februar 2010 - 23:55 #4
Du har glemt et punktum her:
$header = "from:kontaktformular@tomjensen.dk";

Skal være:
$header .= "from:kontaktformular@tomjensen.dk";
Avatar billede mulvad Nybegynder
25. februar 2010 - 00:08 #5
Tak for det - det kan jeg godt se, men skal der så også være et punktum i den øverste linje " $header  = 'MIME-Version: 1.0' . "\r\n";" ?

$header  = 'MIME-Version: 1.0' . "\r\n";
      $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
      $header .= "from:kontaktformular@tomjensen.dk";

Selv om jeg sætter det manglende punktum ind får jeg stadig ikke æøå rigtigt igennem - se nedenfor:

Der er følgende henvendelse fra en bruger på siden www.tomjensen.dk: Navn: æøå Firma/organisation: æøå Adresse: æøåø Postnummer og by: æøå Telefon: æøå Email: æøå Besked: æøå
Avatar billede mulvad Nybegynder
25. februar 2010 - 00:12 #6
Men hey - det fungerer nu med UTF-8. Perfekt tak for hjælpen :-)

Ved du så også hvor jeg skal sætte en linje ind, der sender brugeren videre til en "kvitteringsside" og efterfølgende tilbage til hovedsiden igen?
Avatar billede mulvad Nybegynder
25. februar 2010 - 00:12 #7
(jeg skal nok give dig dine velfortjente point så snart du har svaret ...)
Avatar billede michael_stim Ekspert
25. februar 2010 - 00:23 #8
Du kan sætte en:
header('location: kvittering.php');
under din:
mail($modtager, $emne, $besked, $header);

Og i kvittering.php (hvis din side hedder det), kan du lave en knap der sender en tilbage.
Avatar billede mulvad Nybegynder
25. februar 2010 - 16:45 #9
Hej Michael

Tak igen :-)

Du skal vist lægge dit svar som et svar, hvis altså det med point betyder noget for dig. Ellers kan jeg ikke godkende dit svar og lukke emnet.

Jeg bøvler med at få linjeafstand i min mail fra formen. Troede at \n kunne gøre det, men det hele kommer lige efter hinanden. Ved du evt. hvad jeg skal gøre i stedet for?

Se eksempel:

Der er følgende henvendelse fra en bruger på siden www.tomjensen.dk: Navn: Test Testesenæøå Firma/organisation: Test Adresse: Æblevej 14 æøå Postnummer og by: 2611 Brøndby Telefon: 12345678 Email: test@læsøå.dk Besked: TEst æøå Test ÆØÅ
Avatar billede michael_stim Ekspert
25. februar 2010 - 16:57 #10
Prøv \r\n

Samler ikke på point. Læg selv et svar og accepter.
Avatar billede michael_stim Ekspert
25. februar 2010 - 17:00 #11
Og i PHP, fra tekstfelt hedder det:

nl2br($besked);
Avatar billede mulvad Nybegynder
25. februar 2010 - 17:10 #12
Ok :-) Tak igen..
Avatar billede jens426 Nybegynder
01. marts 2010 - 18:37 #13
folk med samme problem
http://www.udvikleren.dk/PHP/Thread.aspx/6/20477/

en anden løsning kunne være at bruge escpae character

f.eks. kunne beskeden laves på følgende måde

$besked = str_replace("æ", "&aelig;",$besked);
$besked = str_replace("Æ", "&AElig;",$besked);
$besked = str_replace("ø", "&oslash;",$besked);
$besked = str_replace("Ø", "&Oslash;",$besked);
$besked = str_replace("å", "&aring;",$besked);
$besked = str_replace("Å", "&Aring;",$besked);
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