Contact formulier - Cyrillic schrift probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb een scriptje welke de inhoud van mijn contactformulier naar mijn email adres stuurt. Als het scriptje gevuld wordt met characters uit de western-europe character set, gaat het goed, maar zo gauw als ik het scriptje gebruik om cyrillic characters naar mijn email adres te versturen gaat het fout, en krijg ik rubbish toe ge-emailed..
Het scriptje ziet er als volgt uit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$headers  = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=UTF-8\n";
$headers .= "Content-Transfer-Encoding: 7bit\n";
 
$name = $_POST['name']; // contain name of person
$email = $_POST['email']; // Email address of sender 
$web = $_POST['web']; // Your website URL
// $body = $_POST['text']; // Your message 
$body = htmlentities($_POST['text'], ENT_QUOTES, "UTF-8");
$receiver = "tester@testplekje.nl" ; // hardcorde your email address here - This is the email address that all your feedbacks will be sent to 
if (!empty($name) & !empty($email) && !empty($body)) {
    $body = "Name:{$name}\n\nWebsite :{$web}\n\nComments:{$body}";
    $send = mail($receiver, 'Contact Form Submission', $body, "From: {$email}");
    if ($send) {
        echo 'true'; //if everything is ok,always return true , else ajax submission won't work
    }
}


Ik maak in zowel mijn html paginaas, als in dit script dus gebruik van utf-8, en het weergeven en laten invoeren van cyrillic schrift werkt op de webpagina uitstekend, alleen de cyrillic schrift ontvangen characters zijn onleesbaar.

Dit gebeurt zowel in Firefox, als Chrome en in IE, ik heb dus het idee dat het niet zozeer een script error is, maar meer een verkeerde instelling (voor het weergeven van cyrillic characters) is bij mijn webserver-provider.

Als ik in Google zoek, dan komt er ook steeds naar voren dat Ajax standaard al in utf-8 werkt, dus zou het toe moeten voegen van de utf-8 strings in header en ook bij htmlentities niet nodig moeten zijn, het wel of niet gebruiken hiervan maakt ook totaal geen verschil.
Kan dit mijn vermoeden dat dit aan een instelling bij mijn hosting-provider ligt versterken?

[ Voor 0% gewijzigd door RobIII op 26-04-2011 21:08 . Reden: Code tags toegevoegd ]


Acties:
  • 0 Henk 'm!

Verwijderd

Laat ik voorop stellen dat het probleem is dat je zelf te weinig ervaring hebt met het werken met verschillende character encodings.

Als je gebruik maakt van een hosting provider met Apache en PHP (zoals voor het meerendeel geldt), kun je via een .htaccess file normaal gesproken instellingen van PHP en/of Apache aanpassen als dat nodig is.

Maar waarom stuur je bijvoorbeeld geen content-type header en character encoding mee in de email? Hoeft het daar ineens niet?
Ik raad aan overal met UTF-8 te werken zodat je nergens hoeft te converteren.

Acties:
  • 0 Henk 'm!

  • Xuj
  • Registratie: November 2009
  • Laatst online: 05-06 11:08

Xuj

Misschien ook een idee om gebruik te maken van de [code] tag.

Acties:
  • 0 Henk 'm!

  • Jelle K
  • Registratie: Januari 2010
  • Laatst online: 16:44
Zoals Cheatah al aangeeft is het inderdaad nodig om de charset mee te geven aan de headers van de mail() functie. Het vierde argument, waar je nu alleen de afzender in verwerkt, moet worden aangevuld met de headers die je boven aan je script opslaat in $headers maar vervolgens niets mee doet.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Waarom maak je een variabele $headers als je em niet gebruikt? ;)

Maak het jezelf makkelijk en pak gewoon iets als PHPMailer, dan hoef je zelf niet zo aan te rotzooien :)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 06-09 16:59

CoolGamer

What is it? Dragons?

UTF-8 is een 8 bits encoding, terwijl je aangeeft dat je Content-Transfer-Encoding 7 bits heeft. Westers schrift kan worden gemaakt met de eerste 7 bits, maar voor de andere schriften zijn de volle 8 bits nodig. Ik raad je aan om de transfer encoding te veranderen in base64 en htmlentities ook vervangt door base64.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸

Pagina: 1