ここに私の連絡先機能があります:
public static function contact_anon()
{
$form = new Form('contact_anon');
$form->field('email', 'text', array
(
'max_length' => 45,
'valid_email' => true
));
$form->field('message', 'textarea', array
(
'max_length' => 400,
'min_length' => 25
));
if($data = $form->validate())
{
$envoi = array
(
'message' => $data['message'],
'email' => $data['email']
);
mail('mymail@gmail.com', lang('contact_anon'), lang('contact_anon_text', $envoi), 'From: noreply@'.$_SERVER['HTTP_HOST']);
}
return $form;
}
次に、送信されるコンテンツテキストとフォームからのメッセージを含むこの他のphpファイルがあります。
<?php
fw::$lang = array_merge(fw::$lang, array
(
'contact_anon_text' => "You have been contacted :
Message : {message}
Mail : {email}"
));
フォームは正常に機能していますが、{message}
次のように正しく表示されません。
j\'écris avec des accents pour voir si ça marche.
Web サイトには UTF8 文字セットがありますが、php についてはわかりません。次のことを試しました。
'message' => htmlentities((utf8_decode($data['message']), ENT_QUOTES),
しかし、それは戻ります:
syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting '('
UTF8 に関する何百もの投稿があることは知っています。それらをチェックし、php マニュアルと sql マニュアルを読みましたが、私は初心者で英語を話せないので、あまり理解できませんでした。
データベースがutf8_general_ciを使用しているにもかかわらず、テキストフィールドをデータベースに送信するときにも同じ問題があります。したがって、それは間違いなく私のphpコードの問題だと思います。コントローラーで MVC スクリプトを使用しています。SQL の問題を部分的に解決するために、以下を使用します。
return mysql_real_escape_string($string);
....
db::escape($username)
したがって、出力は正しいですが、UT8 を使用するように php を構成し、フランス語のアクセントなどの特殊文字を許可することを好みました。