Æ, Ø og Å mellem form og mail

Her kan du få hjælp og stille spørgsmål til PHP!
Besvar
MissKotek
Begynder
Indlæg:19
Tilmeldt:10. sep 2011, 14:53
Æ, Ø og Å mellem form og mail

Indlæg af MissKotek » 11. maj 2012, 16:22

Hej!

Jeg har lavet en form, hvor man kan indtaste nogle oplysninger, som så bliver videresendt til en mail.
Her er jeg stødt på to problemer, som jeg håber i kan hjælpe mig med.

1) Når de indtastede data sendes til mail adressen, så kan æ, ø og å ikke læses. Resultatet bliver: Ã¥ og ø og æ
2) Når man klikker på send-knappen, for at sende de indtastede data til mail-adressen, så bliver man sendt op i toppen af hjemmesiden. Her ønsker jeg at man bliver ved formularen, så kan ikke skal scrolle ned for at læse meddelelsen om at de indtastede data er blevet sendt til mail-adressen.

Her er den kode som jeg anvender:

Kode: Vælg alt

<?php
$server = "***";
$brugernavn = "***";
$kode = "***";
$db = "***";

mysql_connect($server , $brugernavn , $kode) or die(mysql_error());

echo "";

mysql_select_db($db) or die(mysql_error());

echo "";

function printform($data, $errors) {
    ?>
    <form action="<?=$_SERVER['PHP_SELF'];?>" method="POST">

    <div style=" height: 22px;"><label style=" line-height: 25px">
    <? if($errors['navn']) print '<b>'.$errors['navn'].'</b><br>'; ?>
    Navn:</label> <input class="input_txt" value="<?=$data['navn'];?>" name="navn" type="text"></div>
    <div style="height:6px"></div>

    <div style=" height: 22px;"><label style=" line-height: 25px">
    Telefon:</label> <input class="input_txt" value="<?=$data['telefon'];?>" name="telefon" type="text"></div>
    <div style="height:6px"></div>

    <div style=" height: 22px;"><label style=" line-height: 25px">
    <? if($errors['email']) print '<b>'.$errors['email'].'</b><br>'; ?>
    E-mail:</label> <input class="input_txt" value="<?=$data['email'];?>" name="email" type="text"></div>
    <div style="height:6px"></div>

    <div style=" height: 22px;"><label style=" line-height: 25px">
    <? if($errors['emne']) print '<b>'.$errors['emne'].'</b><br>'; ?>
    Emne:</label> <input class="input_txt" value="<?=$data['emne'];?>" name="emne" type="text"></div>
    <div style="height:6px"></div>

   <div><textarea name="besked" style="width: 269px; height: 54px;"name="besked" class="text_area" cols="32" rows="3" name="besked"><?=htmlentities($data['besked']);?></textarea></div>
    <? if($errors['besked']) print '<b>'.$errors['besked'].'</b><br>'; ?>
   <div style="height:5px"></div>

    <div style="height:5px;">
    <input class="submit" type="submit" name="submitted" value="Send"> </div>

    </form>
    <?
}

function _send($to, $data) {
    $subject = $data['emne'];
    $headers = 'From: '.$data['navn'].' <'.$data['email'].'>';
    $message = 'Besked fra formular.

Navn:    '.$data['navn'].'
E-mail:  '.$data['email'].'
Telefon: '.$data['telefon'].'

'.$data['besked'];

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

function _data() {
    return array(
        'navn' => $_POST['navn'],
        'telefon' => $_POST['telefon'],
        'email' => $_POST['email'],
        'emne' => $_POST['emne'],
        'besked' => $_POST['besked']
    );
}

function _validate($data) {
    $errors = array();
    if(!$data['navn']) $errors['navn'] = 'Navn skal udfyldes';
    if(!$data['email']) $errors['email'] = 'E-mail skal udfyldes';
    if(!$data['emne']) $errors['emne'] = 'Emne skal udfyldes';
    if(!$data['besked']) $errors['besked'] = 'Besked skal udfyldes';
    return $errors;
}

if($_POST['submitted']) {
    $data = _data();
    $errors = _validate($data);
    if(count($errors)) {
        printform($data, $errors);
    } else {
        _send('ukendt@mail.dk', $data);
        print 'Tak for din henvendelse, vi har modtaget din besked.';
    }
} else {
    printform(array(), array());
}

?>
MVH. MissKotek

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Æ, Ø og Å mellem form og mail

Indlæg af ThomasI » 13. maj 2012, 13:09

Hej!

Har du en HTML opsætning på din side hvor dit script ligger?

Prøve at lave en standard side opsætning og så sæte dit script ind mellem <body></body>

Husk så også at sætte doc typen til:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

eller

<meta charset="utf-8">

Alternativt kan du prøve at sætte din mail header med UTF-8 således:

Kode: Vælg alt

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";
$headers .="Content-Transfer-Encoding: 8bit";
Se mere her:

http://www.naprej.com/send_utf8_mail_in_php

MissKotek
Begynder
Indlæg:19
Tilmeldt:10. sep 2011, 14:53

Re: Æ, Ø og Å mellem form og mail

Indlæg af MissKotek » 14. maj 2012, 15:36

Hej! Mange tak! Det virker nu.

meta-koden, er der i forvejen. Det hjalp at tilføje headers-delen :)
Det eneste der sker nu, er at "MIME-Version: 1.0" kommer til at stå i emnefeltet i mailen. Hvordan fjernes det?

Mvh. MissKotek

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Æ, Ø og Å mellem form og mail

Indlæg af ThomasI » 14. maj 2012, 17:04

Prøv at se om det virker ved blot at have dette med:

Kode: Vælg alt

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

Besvar