Правильно кодируйте символы в почтовой форме PHP («Я» превращается в «Я») - PullRequest
0 голосов
/ 28 апреля 2010

Я тестирую почтовую форму PHP, очень скромную, найдена здесь :

<?php

    if(isset($_POST['submit']))

    {

        //The form has been submitted, prep a nice thank you message

        $output = '<h3>Thanks for your message</h3>';


        //Deal with the email

        $to = 'mymail@mail.com';

        $subject = 'you have a mail';



        $contactname = strip_tags($_POST['contactname']);

        $adress = strip_tags($_POST['adress']);

        $contactemail = strip_tags($_POST['contactemail']);

        $textmessage = strip_tags($_POST['textmessage']);



        $boundary =md5(date('r', time())); 



        $headers = "From: My Site\r\nReply-To: webmaster@mysite.com";





        $message = "Name: ".$contactname."\n";

        $message .= "Adress: ".$adress."\n";

        $message .= "E-mail: ".$contactemail."\n";

        $message .= "Message: ".$textmessage."\n";



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

    }

?>

Проблема в том, что я получаю нежелательную косую черту "\" каждый раз, когда пишу одинарную или двойную кавычку в своем сообщении, поэтому в моем почтовом ящике "я" отображается как "Я".

Я знаю, что это связано с тем, как PHP отличает цитаты кода от только лекционных цитат, но я не знаю, что добавить в форму, чтобы она правильно работала.

Любая помощь приветствуется,

Ответы [ 2 ]

5 голосов
/ 28 апреля 2010

Самое простое - отключить магические кавычки в php.ini,

magic_quotes_gpc = ложь

Если вы не можете сделать это, вам нужно удалить слеш, как это,

if (get_magic_quotes_gpc()) {
    foreach($_POST as $k => $v) {
       $_POST[$k] = stripslashes($v);
    }
}
3 голосов
/ 28 апреля 2010

вы можете попробовать лишить себя сообщения, что-то вроде:

$message = stripslashes($message);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...