[英]Cyrillic characters from javascript cookie to php output via $_COOKIE
[英]PHP emails from form scramble cyrillic characters
这就是全部内容。 自从我今天开始使用PHP以来,我面临着这个问题。 我已经为我工作的ISP公司建立了一个表格,通过电子邮件将表格结果发送给我。 客户填写此表格以请求我们的新服务。 由于该公司是外国(保加利亚)公司,因此99%的人会用西里尔文填写该信息,因此我自己填写了该信息进行了测试,并收到了此电子邮件。
来自:ÐÑд
电话号码:56
精选服务:
互联网:100 || 电视:舒适
信息:
ЪЕDDDDDD
因此,我进行了一些研究,在StackOverflow中检查了一些与此相关的其他帖子,但都$header .= "\\nContent-type: text/plain; charset=\\"utf-8\\"";
……大多数建议添加$header .= "\\nContent-type: text/plain; charset=\\"utf-8\\"";
一个问题是我不确定如何实施此解决方案,第二个问题是它对提出该问题的人不起作用,甚至在我所审查的问题中也没有。
这是PHP代码和HTML代码,希望您能给我一种确切的修复方式,因为我对PHP的语法几乎一无所知。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Online Request</title>
<meta content="php, contact, form, thinking" name="keywords">
<meta content="Contact us and let us know if we can help you out further." name="description">
<style>
input, textarea {
color: #fff;
padding: 5px;
margin: 10px;
font-family: Cambria, Cochin, serif;
font-size: medium;
font-weight: bold;
outline: none;
}
p {
font-family: Cambria, Cochin, serif;
font-size: large;
margin-bottom: -5px;
}
input[type=text], textarea {
width: 350px;
background-color: #000;
border: 1px solid #000;
}
input[type=submit] {
width: 100px;
background-color: #710000;
border: 1px solid #000;
font-size: large;
color: #FFFFFF;
}
input[type=submit]:hover {
background-color: #990000;
cursor: pointer;
}
input[type=submit]:active {
background-color: #4A6F00;
}
h1 {
text-size: 26px;
font-family: Arial;
text-shadow:
-1px -1px 0 #000,
1px -1px 0 #000,
-1px 1px 0 #000,
1px 1px 0 #000;
color: #ff0000;}
body {
padding: 10px;
background-color: #F4F4F4;
}
.checkbox {
font-family: Cambria, Cochin, serif;
font-size: large;
margin-bottom: -5px;
}
</style>
</head>
<body>
<h1>Online Request</h1>
<form action="emailer.php" method="POST" accept-charset="UTF-8">
<div>
<p>Имена</p>
<input name="name" type="text"> <br>
</div>
<div>
<p>Телефон за връзка</p>
<input type="text" name="number" min="10" max="10">
<br>
</div>
<div>
<p> Вид услуга - Internet </p> <br/>
<input name="servicetypeINT" type="radio" value="30"><span class="checkbox"> Internet Value - 30Mpbs </span> <br/>
<input name="servicetypeINT" type="radio" value="60"><span class="checkbox"> Internet Mania - 60 Mbps </span><br/>
<input name="servicetypeINT" type="radio" value="100"><span class="checkbox"> Internet Extreme - 100Mbps</span> <br/>
<input name="servicetypeINT" type="radio" value="150"><span class="checkbox"> Internet Pro - 150Mpbs</span><br/>
</div>
<hr/>
<div>
<p>Вид услуга - Телевизия</p> <br/>
<input name="servicetypeTV" type="radio" value="anal"><span class="checkbox"> Аналогова телевизия - 50 канала </span> <br/>
<input name="servicetypeTV" type="radio" value="start"><span class="checkbox"> Start TV - 40+ Цифрови канала </span><br/>
<input name="servicetypeTV" type="radio" value="comfort"><span class="checkbox"> Confort TV - 160+ Цифрови канала</span> <br/>
<input name="servicetypeTV" type="radio" value="mania"><span class="checkbox"> Mania TV - 160+ Цифрови / 20+ HD канала</span><br/>
</div>
<div>
<p>Comment</p>
<textarea cols="30" name="comment" rows="9"></textarea>
<br> </div>
<div>
<input name="submit" type="submit" value="Изпрати"> </div>
</form>
</body>
</html>
<?php
if(isset($_POST['submit'])) {
$to = "denislav@svishtov.net";
$subject = "New Internet and/or TV request";
// data the visitor provided
$name_field = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
$phone_field = filter_var($_POST['number']);
$selectedINT_field = filter_var($_POST['servicetypeINT']);
$selectedTV_field = filter_var($_POST['servicetypeTV']);
$comment = filter_var($_POST['comment'], FILTER_SANITIZE_STRING);
//constructing the message
$body = "
From: $name_field\n\n
Phone number: $phone_field\n\n
Selected Services:\n\nInternet: $selectedINT_field || TV: $selectedTV_field \n\n
Message:\n\n $comment ";
// ...and away we go!
mail($to, $subject, $body);
// redirect to confirmation
header('Location: confirmation.html');
} else {
// handle the error somehow
echo "Грешка в попълването на формата";
}
?>
另一个有趣的事实是,当我从本地计算机上打开文件时(因为如果我从在线托管的计算机上尝试,将会收到错误回显),PHP代码本身中的西里尔文字显示为电子邮件结果...但是当我从主机打开它时,通过直接解决它,我得到了正确的错误消息...保加利亚语...没有任何乱码。
PHP中的代码行
header('Content-Type: text/html; charset=utf-8');
似乎转换标题消息。 我尝试寻址$name_field('Content-Type: text/html; charset=utf-8');
但是结果是空白的 ,php无法正常运行,我猜是因为我给了它一个错误的或无法操作的代码行,地址为$name_field
。
问题是,我该如何正确解决这个问题?
FIXED在php代码的开头添加了$ headers内容类型
<?php
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text; charset=utf-8' . "\r\n";
并在MAIL函数中包含$ header
mail($to, $subject, $body, $headers);
花了我四个小时,但这就是开始的样子。 无论如何,感谢您的帮助,或者没有这样的帮助。 祝你有美好的一天,并希望这能对某人有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.