G2Petter Skrevet 14. april 2007 Del Skrevet 14. april 2007 Hvis jeg har et HTML-skjema som sender informasjonen til et PHP-script som skal sende en mail med informasjonen fra skjemaet, hvilket tegnsett skal jeg bruke for å kunne få norske tegn? UTF-8? Hvis jeg prøver å bruke UTF-8 får jeg en "headers already sent"-feil, er det noen som vet hvorfor? Hilsen Petter Lenke til kommentar
Ståle Skrevet 14. april 2007 Del Skrevet 14. april 2007 jeg vet ikke... kanskje det hr noe med at du ikke har postet noe kode? utf-8 er ihvertfall den man bør bruke, les her http://www.joelonsoftware.com/articles/Unicode.html Lenke til kommentar
G2Petter Skrevet 14. april 2007 Forfatter Del Skrevet 14. april 2007 Beklager at jeg ikke la ved kode. Her er den relevante HTML-biten. Dette er i UTF-8. <h2>Fyll ut skjemaet for å ta kontakt</h2> <p>Dette skjemaet kan du fylle ut for å ta kontakt med oss. Feltene merket med "*" er obligatoriske.</p> <form action="../scripts/kontakt_action.php" method="post"> <p>Skriv inn din e-post-addresse: *</p> <p><input type="text" name="mail" value="E-post" onfocus="if(this.value=='E-post'){this.value=''}" onblur="if(this.value==''){this.value='E-post'}" /></p> <p>Ditt navn: *</p> <p><input type="text" name="name" value="Navn" onfocus="if(this.value=='Navn'){this.value=''}" onblur="if(this.value==''){this.value='Navn'}" /></p> <p>Beskjeden din: *</p> <p><textarea cols="20" rows="10" name="message" onfocus="if(this.value=='Din beskjed'){this.value=''}" onblur="if(this.value==''){this.value='Din beskjed'}">Din beskjed</textarea></p> <p>Skriv inn ditt telefonnummer hvis du vil vi skal ringe deg opp</p> <p><input type="text" name="tlf" value="Telefonnummer" onfocus="if(this.value=='Telefonnummer'){this.value=''}" onblur="if(this.value==''){this.value='Telefonnummer'}" /></p> <p><input type="submit" name="submit" value="Send" /></p> </form> Her er den relevante PHP-en. Dette er enkodet med ANSI. Hvis jeg forsøker å enkode det med UTF-8, får jeg den tidligere nevnte "Headers already sent"-feilen, enten hvis jeg har en sjekk som feiler, eller hvis alt går bra, og den skal videresende til main igjen. <?php include('functions.php') $mail = $_POST['mail']; $name = $_POST['name']; $message = $_POST['message']; if (!isset($_POST['tlf']) or $_POST['tlf'] == "Telefonnummer") { $tlf = NULL; } else { if(!isOkay($tlf)) { header ('Location: ../index.php?page=error_kontakt'); exit; } else { $tlf = $_POST['tlf']; } } //Her kommer en mengde sjekker for å se at brukeren har fylt ut alle feltene du skal, og at han/hun ikke spammer if (!isset ($_POST['submit'])) { header ('Location: ../index.php?page=kontakt'); exit; } if (!isset($_POST['mail']) or !isset($_POST['name']) or !isset($_POST['message'])) { header ('Location: ../index.php?page=error_kontakt'); exit; } if ($mail == 'E-post' or $name == 'Navn' or $message == 'Din beskjed') { header ('Location: ../index.php?page=error_kontakt'); exit; } if (!isOkay($name) or !isOkay($message) or !isValidEmail($mail)) { header ('Location: ../index.php?page=error_kontakt'); exit; } //Her slutter den siste sjekken if(mail ('[email protected]', "Forespørsel fra $name", "$tlf \n $name har sendt en mail. \n Her følger beskjeden: \n $message", "From: $mail")) { header ('Location: ../index.php?page=main'); exit; } else { header ('Location: ../index.php?page=error_kontakt'); exit; } ?> Lenke til kommentar
Ståle Skrevet 14. april 2007 Del Skrevet 14. april 2007 enkodet, hva mener du da? (du har sikkert riktig, det er bare jeg som ikke vet hva som heter hva ) fil --> encoding --> utf-8 header('Content-Type: text/html; charset=utf-8'); eller <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> Lenke til kommentar
G2Petter Skrevet 14. april 2007 Forfatter Del Skrevet 14. april 2007 (endret) Kan godt hende jeg ordlegger meg galt. Jeg skriver i Notepad++, og velger format->encode in utf-8, og det er da header-feilene oppstår. Jeg la inn header('Content-Type: text/html; charset=utf-8'); -linja i toppen av dokumentet, og det ga meg bare en "headers already sent"-feil til, og internasjonale tegn i mailene skriptet sender blir fremdeles feil tolket når mailen kommer frem. Endret 14. april 2007 av G2Petter Lenke til kommentar
stiber Skrevet 14. april 2007 Del Skrevet 14. april 2007 Hvis du skal ha php script i utf-8 må du lagre det som utf-8 uten "byte order mark" eller BOM header. Denne vil ligge som de tre første bytes i dokumentet, og være usynlig i editoren. Disse usynlige bytene vil ligge før første <?php tag og trigge sending av headers. Hvordan du lagrer som utf8 uten bom i notepad++ aner jeg ikke. prøv google. Lenke til kommentar
G2Petter Skrevet 14. april 2007 Forfatter Del Skrevet 14. april 2007 Tipset ditt fungerte, i den forstand at header-feilene forsvant, men jeg får fremdeles ødelagte tegn i den mailen som kommer frem. Lenke til kommentar
grimjoey Skrevet 14. april 2007 Del Skrevet 14. april 2007 bruk en annen editor er vel cluet. finnes mange gratis ide'er (integrated developer environment) ute på nettet som støtter php. Lenke til kommentar
Ståle Skrevet 14. april 2007 Del Skrevet 14. april 2007 Notepad2 http://www.flos-freeware.ch/notepad2.html Lenke til kommentar
G2Petter Skrevet 14. april 2007 Forfatter Del Skrevet 14. april 2007 OK, nå har jeg sjekket at alle sidene er lagret med riktig charset, og deklarert det i toppen, og det blir fremdeles feil. Jeg har testet hvordan variablene som kommer fra skjemaet oppfører seg ved å legge inn følgende rett over koden som sender mailen: echo "<p>$mail</p><p>$message</p><p>$name</p>"; Variablene kom da ut med alle tegn presentert korrekt, mens i mailen er fremdeles både de norske tegnene som kommer fra skjemaet og de som er hardkodet inn i mailen ødelagte. Lenke til kommentar
Ståle Skrevet 14. april 2007 Del Skrevet 14. april 2007 Har du utf-8 som tegnset for mailen da? $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; Lenke til kommentar
G2Petter Skrevet 14. april 2007 Forfatter Del Skrevet 14. april 2007 Hvor skal jeg skrive det? Som ekstraparameter i mail()? Lenke til kommentar
Ståle Skrevet 14. april 2007 Del Skrevet 14. april 2007 <?php $body="<em>HTML</em> formatted <strong>Message</strong"; $headers = "From: [email protected] \r\n"; $headers.= "Content-Type: text/html; charset=ISO-8859-1 "; $headers .= "MIME-Version: 1.0 "; /*notice there aren't any \r\n after the second two header additions. This is what made this version work correctly*/ mail("[email protected]", "An HTML Message", $body, $headers); ?> Lenke til kommentar
G2Petter Skrevet 14. april 2007 Forfatter Del Skrevet 14. april 2007 Se der, ja. Nå fungerer det. Tusen takk for all hjelp, folkens, det er dere som gjør Diskusjon.no til Norges beste nettsted. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå