2013-04-11 42 views
0

我是新來使用PHP和表格,所以如果有人願意幫助,我會非常感激。錯誤的編碼與西里爾在PHP聯繫表格

我有一個聯繫表單,但它不會正確發送任何西里爾文字符。我知道我必須在代碼的某處放置Content-type: text/plain; charset=UTF-8,但我不知道該把它放在哪裏。表單元素設置爲在UTF-8中發佈,但它似乎無法正確使用PHP文件。

error_reporting(E_ALL^E_NOTICE); 

$my_email = "[email protected]"; 
$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

Добавитова:

$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是不錯的主意,因爲否則每個來自Internet的垃圾郵件機器人都將使用您的表單發送郵件,請點擊這裏查看更多處理問題的方法。)

+0

首先,在發表聲明之前儘量區分語言,它不是俄語。其次,你在回覆時告訴我要使用哪種語言? – bodi0 2013-04-11 11:22:50

+0

我在你的帖子之前糾正了自己(我也不知道我的評論去了哪裏,/:)。 http://blog.stackoverflow.com/2009/07/non-english-question-policy/ – Prisoner 2013-04-11 11:31:13

+0

注意:( – 2013-04-11 15:32:03