【问题标题】:PHP Contact form input doesnt support diacriticsPHP 联系表单输入不支持变音符号
【发布时间】:2019-08-04 05:53:32
【问题描述】:

我的 php 联系表单代码有小问题。 我的网站使用变音符号,效果很好。但是在使用任何 [0-9] 键作为变音符号后,我提交后的联系表单输入看起来像这样“ÄšŔ。

PHP 文件:

<?php


$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$service = $_POST['service'];      
$message = $_POST['message'];      

$from = $name; 
$to = 'info@email.com'; 
$subject = "$name - $service";

$body = "Jméno zákazníka: $name\nE-Mail zákazníka: $email\nTelefonní číslo: $phone\nservice: $service\nZpráva: $message ";

if (mail ($to, $subject, $body, $from, $headers)) {
    $headers = array("Content-Type: text/html; charset=UTF-8");
} else {
    echo "Failed";
}


?>

提交联系表格后的电子邮件输出:

First Last Name

Jméno zákazníka: Name
E-Mail zákazníka: email
Telefonní císlo: phone number
service: havárii
Zpráva: ÄÅ¡Å

作为名称、电子邮件、电话、服务、消息的“标题”是用变音符号写的,但是这里的输入例如:Zpráva: ÄšŠis not supported for some reason.

还有html文件包含

<meta charset="utf-8">

更新 1

已尝试将 $headers = array("Content-Type: text/html; charset=UTF-8");在提交联系表但未进行任何更改之前。仍然不支持以下任何字符:ě š č ř ž ý á í é

更多信息

添加问题最明显的html部分

<div class="col-lg-12">
<textarea name="message" id="" cols="30" rows="10" placeholder="Zpráva"> 
</textarea>
</div>

【问题讨论】:

  • 您的提交表单是否也指定了 UTF-8 字符集?
  • @Philip 我在 html 文件中有我的联系表格,其中 已经设置在正文中。
  • @Ingus 不,表单的重点是我已经设置的标题。
  • 我认为缺少一些信息。 ..
  • " 提交后输入" ...提交后您在哪里看到它?您的 PHP 似乎没有重新输出任何提交的数据。您是在谈论您在电子邮件中看到的内容吗?

标签: php html contact-form


【解决方案1】:

您需要将您的标头作为mail() 的第四个参数:

<?php

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$service = $_POST['service'];      
$message = $_POST['message'];      

$from = $name; 
$to = 'info@email.com'; 
$subject = "$name - $service";

$body = "Jméno zákazníka: $name\nE-Mail zákazníka: $email\nTelefonní číslo: $phone\nservice: $service\nZpráva: $message ";

$headers = [
    'Content-Type' => 'text/plain; charset=UTF-8',
    'From' => $from,
];

if (mail($to, $subject, $body, $headers)) {
    echo "Sent";
} else {
    echo "Failed";
}

请注意,这是针对纯文本电子邮件,而不是针对 HTML 电子邮件。

From 的格式应该是这样的:Name &lt;email@example.com&gt;,所以如果你没有信息,那么不要包含它

【讨论】:

  • 如果 OP 想要 HTML 电子邮件,为什么不举一个带有该标题的示例呢?
  • 感谢您的解释。试过了,还是不行。得到相同的结果。也是的,我知道这是用于纯文本的,它的使用方式是这样的。
  • 我想知道当我收到消息“$message = $_POST['message'];”时问题是否出在此处打印消息“$body =”Jméno zákazníka: $name\nE-Mail zákazníka: $email\nTelefonní číslo: $phone\nDruh servisu: $service\nZpráva: $message ";" 但该网站完全兼容 utf 8 和 0-9 字符
  • 当你声明 $body 你没有打印任何东西,你只是连接一个变量。我认为问题不会在那个时候出现。只有当您尝试显示它时,编码才会成为问题
猜你喜欢
  • 2012-06-13
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 2020-12-08
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 2014-02-28
相关资源
最近更新 更多