我是使用PHP和表单的新手,所以如果有人愿意提供帮助,我将非常感激。
我有联系表单,但它没有正确发送任何西里尔字符。我知道我必须在代码中的某处放置Content-type: text/plain; charset=UTF-8
,但我不知道在哪里准确地说出来。表单元素设置为在UTF-8
中发布,但它似乎无法与PHP文件一起正常工作。
error_reporting(E_ALL ^ E_NOTICE);
$my_email = "myemailaddress@mail.com";
$from_email = "";
$continue = "index.php";
$errors = array();
// Remove $_COOKIE elements from $_REQUEST.
if (count($_COOKIE)) {
foreach(array_keys($_COOKIE) as $value) {
unset($_REQUEST[$value]);
}
}
// Validate email field.
if (isset($_REQUEST['email']) && !empty($_REQUEST['email']) && !empty($_REQUEST['family']) && !empty($_REQUEST['about'])) {
$_REQUEST['email'] = trim($_REQUEST['email']);
if (substr_count($_REQUEST['email'], "@") != 1 || stristr($_REQUEST['email'], " ")) {
$errors[] = "Email address is invalid";
} else {
$exploded_email = explode("@", $_REQUEST['email']);
if (empty($exploded_email[0]) || strlen($exploded_email[0]) > 64 || empty($exploded_email[1])) {
$errors[] = "Email address is invalid";
} else {
if (substr_count($exploded_email[1], ".") == 0) {
$errors[] = "Email address is invalid";
} else {
$exploded_domain = explode(".", $exploded_email[1]);
if (in_array("", $exploded_domain)) {
$errors[] = "Email address is invalid";
} else {
foreach($exploded_domain as $value) {
if (strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i', $value)) {
$errors[] = "Email address is invalid";
break;
}
}
}
}
}
}
}
// Check referrer is from same site.
if (!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']))) {
$errors[] = "You must enable referrer logging to use the form";
}
// Check for a blank form.
function recursive_array_check_blank($element_value) {
global $set;
if (!is_array($element_value)) {
if (!empty($element_value)) {
$set = 1;
}
} else {
foreach($element_value as $value) {
if ($set) {
break;
}
recursive_array_check_blank($value);
}
}
}
recursive_array_check_blank($_REQUEST);
if (!$set) {
$errors[] = "You cannot send a blank form";
}
unset($set);
// Display any errors and exit if errors exist.
if (count($errors)) {
foreach($errors as $value) {
print "$value<br>";
}
exit;
}
if (!defined("PHP_EOL")) {
define("PHP_EOL", strtoupper(substr(PHP_OS, 0, 3) == "WIN") ? "\r\n" : "\n");
}
// Build message.
function build_message($request_input) {
if (!isset($message_output)) {
$message_output = "";
}
if (!is_array($request_input)) {
$message_output = $request_input;
} else {
foreach($request_input as $key = > $value) {
if (!empty($value)) {
if (!is_numeric($key)) {
$message_output. = str_replace("_", " ", ucfirst($key)).
": ".build_message($value).PHP_EOL.PHP_EOL;
} else {
$message_output. = build_message($value).
", ";
}
}
}
}
return rtrim($message_output, ", ");
}
$message = build_message($_REQUEST);
$message = $message.PHP_EOL.PHP_EOL.
"-- ".PHP_EOL.
"Thank you for using the contact form.";
$message = stripslashes($message);
$subject = $_REQUEST['about'];
$subject = stripslashes($subject);
if ($from_email) {
$headers = "From: ".$from_email;
$headers. = PHP_EOL;
$headers. = "Reply-To: ".$_REQUEST['email'];
} else {
$from_name = "";
if (isset($_REQUEST['name']) && !empty($_REQUEST['name'])) {
$from_name = stripslashes($_REQUEST['name']);
}
$headers = "From: {$from_name} <{$_REQUEST['email']}>";
}
mail($my_email, $subject, $message, $headers); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Your mail has been sent!</title>
<meta http-equiv="Content-Type" content="text/html; charset = utf - 8 ">
<link rel="stylesheet" type="text/css" href="css/style.css"/>
</head>
<body>
<div>
<center>
<b>Thank you <?php if(isset($_REQUEST['name'])){print stripslashes($_REQUEST['name']);} ?></b>
<br>Your mail has been sent!
<p><a href="<?php print $continue;?>">Click here to continue</a></p>
</center>
</div>
</body>
</html>
答案 0 :(得分:0)
Добавитова:
$headers = "From: " . $from_email;
$headers .= PHP_EOL;
$headers .= "Reply-To: " . $_REQUEST['email'];
//новия код (new code)
$headers .= "MIME-Version: 1.0"."\r\n" ."Content-type: text/plain; charset='utf-8'". "\r\n";
Нямадаелошодасложишинякакваформанаверификация(картинкаскодпримерно,койтотрябвадасевъведе,т.нар。CAPTCHA代码)предипращанеотюзера,иначевсекиспамботщетиползваформатазапращаненамейли ,поровитукимадостаначинизасправянеспроблема。
翻译:(在发送电子邮件之前放置某种验证码,包含代码的图像,所谓的CAPTCHA,这是一个不错的主意,因为否则互联网上的每个垃圾邮件都会使用您的表单进行邮寄,在这里查看更多处理问题的方法。)