07. februar 2012 - 03:40Der er
20 kommentarer og 1 løsning
Charset php
Hej "eksperter"
Jeg er ved igang med konventere min gamle hjemmeside til html5, og har en php mailform på min gamle hjemmeside som fungere fint.
Desværre har jeg problemer med æøå når jeg flytter formen over til et html5 dok. - problemet ligger i at når mailen er sendt fra mit website, modtager jeg den med kodetegn for æø og å i mit mailprogram - På selve websitet er der igen problemer med at vise æøå, da siden er kodet på forhånd.
Så jeg skal ha tilføjet noget i min php kode kunne jeg forestille mig. Har i nogen bud ?
Min php ser således ud.
<?php if (isset($_POST['submit'])) { if (!empty($_POST['name']) && // tjek, at der er skrevet et navn !empty($_POST['email']) && // tjek, at der er skrevet en e-mail-adresse !empty($_POST['emne']) && // tjek, at der er skrevet et emne !empty($_POST['besked']) && // tjek, at der er skrevet en besked
// her følger sikringen mod spambotter !strpos($_POST['name'], "mobil.jalightandsound.dk") && // tjek, at dit domæne ikke er skrevet i feltet "navn" !strpos($_POST['email'], "mobil.jalightandsound.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email" !strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn" !eregi("\r",$_POST['name']) && // tjek, at der ikke er "vogn-retur" i "navn" !eregi("\n",$_POST['name']) && // tjek, at der ikke er "linjeskift" i "navn" !eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email" !eregi("\n",$_POST['email'])) // tjek, at der ikke er "linjeskift" i "email"
// er alt ok, fortsættes med afsendelse af mailen { $headers="From: ".$_POST['name']."<".$_POST['email'].">";
if (@$_POST['customer_copy']) { $headers .= "\r\nBcc: ".$_POST['email']; } $body .= "Den " . date("d/m y") . " kl. " . date("G:i") . " skrev " . $_POST['name'] . ":\r\n\r\n" . $_POST['besked']; if (@mail("mobil@jalightandsound.dk", strip_tags($_POST['emne']), stripslashes(strip_tags($body)), $headers)) { echo "<p>Tak for din kommentar.</p>"; } else { echo "<p>Der opstod en teknisk fejl. Prøv venligst igen!</p>"; } } else { echo "<p>Et eller flere felter mangler at blive udfyldt!</p>"; } } ?>
// To send HTML mail, the Content-type header must be set $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
samt
krzysiek dot 333 at gmail dot com 02-Aug-2011 11:24 Sending messages with polish special characters: <?php function plmail($mail, $sub, $mes){ $headers = "From: ExRobot <robot@example.com>\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/plain; charset=utf-8\r\n"; $headers .="Content-Transfer-Encoding: 8bit";
$mes=htmlspecialchars_decode($mes,ENT_QUOTES);//optional - I use encoding to POST data mail($mail, "=?utf-8?B?".base64_encode($sub)."?=", $mes, $headers); } ?> Page must be in utf-8 encoding.
As far as I know PHP does not support UTF-8 as default encoding for its strings. You need to use the relevant encoding/handling functions for the encoding you would prefer.
Also add a 'Content-Type:text/html;charset=utf-8' to your email headers so the email clients will display the characters correctly (or replace with your encoding of choice).
Det lykkedes mig at få sendt mailen afsted, og modtage den med ÆØÅ. Dog vises der i frafeltet (på min modtaget mail) brugeres navn med efterfølgende tekst MIME-Version:1,0 altså for eks.
[fra Jimmi AndersenMIME-Version:1,0] Er det normalt ?
Min php ser nu således ud
<?php if (isset($_POST['submit'])) { if (!empty($_POST['name']) && // tjek, at der er skrevet et navn !empty($_POST['email']) && // tjek, at der er skrevet en e-mail-adresse !empty($_POST['emne']) && // tjek, at der er skrevet et emne !empty($_POST['besked']) && // tjek, at der er skrevet en besked
// her følger sikringen mod spambotter !strpos($_POST['name'], "mobil.jalightandsound.dk") && // tjek, at dit domæne ikke er skrevet i feltet "navn" !strpos($_POST['email'], "mobil.jalightandsound.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email" !strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn" !eregi("\r",$_POST['name']) && // tjek, at der ikke er "vogn-retur" i "navn" !eregi("\n",$_POST['name']) && // tjek, at der ikke er "linjeskift" i "navn" !eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email" !eregi("\n",$_POST['email'])) // tjek, at der ikke er "linjeskift" i "email"
// er alt ok, fortsættes med afsendelse af mailen {
Det er nemt hvis man ved det, men jeg forstår ikke hvad du mener desværre. Det er et vidt begreb, men hvis du eller nogen anden istedet viser mig hvordan koden skal sættes sammen, vil det være nemmere. Det vil spare en masse tid.
<?php if (isset($_POST['submit'])){ if (!empty($_POST['name']) && // tjek, at der er skrevet et navn !empty($_POST['email']) && // tjek, at der er skrevet en e-mail-adresse !empty($_POST['emne']) && // tjek, at der er skrevet et emne !empty($_POST['besked']) && // tjek, at der er skrevet en besked
// her følger sikringen mod spambotter !strpos($_POST['name'], "mobil.jalightandsound.dk") && // tjek, at dit domæne ikke er skrevet i feltet "navn" !strpos($_POST['email'], "mobil.jalightandsound.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email" !strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn" !eregi("\r",$_POST['name']) && // tjek, at der ikke er "vogn-retur" i "navn" !eregi("\n",$_POST['name']) && // tjek, at der ikke er "linjeskift" i "navn" !eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email" !eregi("\n",$_POST['email'])) // tjek, at der ikke er "linjeskift" i "email"
// er alt ok, fortsættes med afsendelse af mailen { $subject = strip_tags($_POST['emne']); $from = $_POST['name']."<".$_POST['email'].">"; $to = "mobil@jalightandsound.dk"; $message = "Den " . date("d/m y") . " kl. " . date("G:i") . " skrev " . $_POST['name'] . ":\r\n\r\n" . $_POST['besked']; $message = strip_tags($message); // $body
if($status){ echo "<p>Tak for din kommentar.</p>"; } else { echo "<p>Der opstod en teknisk fejl. Prøv venligst igen!</p>"; } } else{ echo "<p>Et eller flere felter mangler at blive udfyldt!</p>"; } } ?>
og olebole's 2 functioner fra #3 skal selvføgelig ligge over denne code, evt i en extern fil man includerer
>"afsendersnavn"efterfulgt afMIME-Version:1,0 kunne det tænkes der mangler et linjeskift i din code fra #2 $headers="From: ".$_POST['name']."<".$_POST['email'].">"; skulle se sådan ud $headers="From: ".$_POST['name']."<".$_POST['email'].">\r\n"; som der også er vist af krzysiek dot 333 at gmail dot com 02-Aug-2011 11:24 i #1
#10 jeg kan ikke lige se den syntax fejl kan du ikke lige lave et screen dunp at fejl beskeden og ligge den op
Jeg tror det var en fejl i min egen html kode som php koden ikke kunne sammen med. Men jeg prøvede at sætte din kode ind i en tom php side, og der viste den ikke nogen syntaxfejl.
Dog viser den blot en blank side uden svar resultat og sender ikke nogen email hvis jeg oploader
du kan også bare kopiere det hele og sætte det ind på notepad, og så tryk gem som. og så bare gem den som det rigtige fil navn, men så inden du trykker gem, skal du ændre fil typen til UTF-8 og så gem, og erstat.
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.