Avatar billede mjayg Nybegynder
15. august 2007 - 16:40 Der er 6 kommentarer

Kontakt formular.

Her derude.

Jeg har en kontaktformular der fungere ualmindelig fint. med validering og det hele.

Problemet: Når man sender en mail fra den kan modtageren af mailen ikke se Æ,Ø & Å.. den skriver ubyldige tegn i stedet.. så som & Tegnet.

Nogen der har erfaringer med hvor problemet kan ligge ?
Avatar billede w13 Novice
15. august 2007 - 16:51 #1
Kan vi se koden, du bruger til at sende med?
Avatar billede mjayg Nybegynder
15. august 2007 - 17:29 #2
selvfølgelig

<?php
if(isset($_POST["send"]))
{
    function isValidEmail($address) 
    { 
        $address = trim($address);
        list(,$host) = split('@',$address);
        if (!preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~]+' . // username
            '@' .                                  // 'at'
            '([-0-9A-Z]+\.)+' .                    // domain name(s)
            '([0-9A-Z]){1,6}\.?$/i',                // tld
            $address)) 
        {
            // Return true if it's an IP
            return preg_match( "/^\[(\d{1,3}\.){3}\d{1,3}\]$/", $host );
        }
        $host .= '.'; // DNS style address
        return (getmxrr($host,$mxrecords) || checkdnsrr($host,'ANY'));
    }

    if (empty($_POST["navn"]) )
    {
        $message1 = "Du mangler at udfylde dit navn";
    }
    elseif (is_numeric($_POST["navn"]) )
    {
        $message1 = "Dit navn kan ikke indholde tal";
    }
    elseif (empty($_POST["email"]) )
    {
        $message2 = "Du mangler at indtaste din email";
    }
    elseif (!isValidEmail($_POST["email"]) )
    {
        $message2 = "Din email er ik korrekt indtastet prøv igen";
    }
    elseif (empty($_POST["emne"]) )
    {
        $message3 = "Du mangler at skrive et emne";
    }
    elseif (is_numeric($_POST["emne"]) )
    {
        $message3 = "Dit emne kan ikke indholde tal";
    }
    elseif (empty($_POST["besked"]) )
    {
        $message4 = "Du mangler at skrive en besked";
    }
    else
    {
        $navn = htmlentities($_POST["navn"]);
        $emne = htmlentities($_POST["emne"]);
        $besked = htmlentities($_POST["besked"]);
        $besked .= nl2br($besked);
        mail("Din@mail.dk", "dinhjemmeside.dk :: " . $emne, $besked, "From: dinhjemmeside.dk :: " . $navn . "<" . $_POST["email"] . ">");
        $SlutBesked = "Din email er nu afsendt, og vi vil svare hurtigst muligt";
    }
}
?>
Avatar billede w13 Novice
15. august 2007 - 17:41 #3
Sætter du et charset med HTML og PHP? Muligvis skal du også definere charset i forbindelse med mailen. Det ved jeg, man af og til skal i ASP med bl.a. den komponent, der hedder JMail.
Avatar billede zurekk Nybegynder
15. august 2007 - 19:37 #4
prøvet med:

$replace[] = '/æ/';
$replace[] = '/ø/';
$replace[] = '/å/';
$with[] = '&aelig;';
$with[] = '&oslash;';
$with[] = '&aring;';

$besked = preg_replace( $replace, $with, $_POST['besked'] );

???
Avatar billede mjayg Nybegynder
15. august 2007 - 20:06 #5
zurekk: Hvor i koden skal jeg smide det ind ?
Avatar billede zurekk Nybegynder
15. august 2007 - 23:07 #6
Hvor som helst.

$navn = htmlentities($_POST["navn"]);
$emne = htmlentities($_POST["emne"]);

$replace[] = '/æ/'; $with[] = '&aelig;';
$replace[] = '/ø/'; $with[] = '&oslash;';
$replace[] = '/å/'; $with[] = '&aring;';
$besked = preg_replace( $replace, $with, $_POST['besked'] );
$besked = htmlentities($besked);
$besked .= nl2br($besked);

Er dog ikke sikker på det virker.
Hvis ikke, så prøver at fjern din mail(), og udskriver $_POST['besked'] istedet, i toppen af filen, og så fortæl hvad den gør med æ ø å, så er det lidt lettere at løse :)
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