-
ID:/eqIiL さんの質問

文字が入れ替わったのしまったので改めて質問いたします。
誤)<p>と</P> → 正)& l t ; p & g t ; と & l t ; / p & g t ;

HP上の質問受付ページから質問をいただくと、その質問がメールで私のPCに届くようになっています。そのメールを受信すると & l t ; p & g t ; と & l t ; / p & g t ;が改行のたびに表示されています。表示されないようにする方法はないでしょうか。よろしくお願いいたします。

みんなの回答 2 件

ID:4N.vWG さんの回答

とりあえず、
使ってるメールフォームのスクリプトなり
WordPressプラグインがわからないと
たぶんテンプレートが悪いよねくらいしか言えないだろうと思う。

ID:/eqIiL

コメントありがとうございます。わかる範囲で記入いたします。お問い合わせ内容に&~が表示されて困っています。長文ですが確認お願いいたします。

wp_version = ’3.8.5
プラグイン
Custom Field Template バージョン 2.2.1

以下ソースです。

<?php
// =================================================
//  メール送信処理
// =================================================
//ini_set( ’display_errors’, 1 );

//コンフィグファイル読み込み
include_once("/usr/home/××××.php");

//POSTの値を取得します。
foreach($_POST as $k => $v){
// 「magic_quotes_gpc = On」のときはエスケープ解除
if (get_magic_quotes_gpc()) {
$v = stripslashes($v);
}
$v = htmlspecialchars($v);
$$k = $v;
}

//時間の取得
$date = date("Y-m-d H:i:s",time());

//メールアドレスを取得
$from = $email;

$other = "From:".$from."\r\n";
$other .= "CC:".$cc."\r\n";
$other .= "BCC:".$bcc."\r\n";

$back_other = "From:".$back_from."\r\n";
$back_other .= "CC:".$back_cc."\r\n";
$back_other .= "BCC:".$back_bcc."\r\n";

// メールタイトルの設定
mb_language("Japanese");
mb_internal_encoding("UTF-8");

$default_internal_encode = mb_internal_encoding();
if($default_internal_encode != ’UTF-8’){
mb_internal_encoding(’UTF-8’);
}
// mb_encode_mimeheaderを使った処理をする
// $subjectの文字列の文字コードはUTF-8
$title2 = mb_encode_mimeheader($title, ’ISO-2022-JP’);
$back_title2 = mb_encode_mimeheader($back_title, ’ISO-2022-JP’);

// メール本文を組み立てます。
$detail = "
▼お問い合わせ区分
$kbn

▼お問い合わせ内容
$com

▼会社名
$comname

▼部署名
$com_busho

▼役職
$com_yakushoku

▼姓
$sei

▼名
$mei

▼メールアドレス
$email

▼電話番号
$telcode

▼FAX番号
$faxcode

▼郵便番号
$zipcode - $zipcode2

▼都道府県
$add1

▼市区群
$add2

▼町名・番地
$add3

▼建物名
$add4
";

$detail = mb_convert_encoding($detail,"JIS","UTF-8");

//メールを送信する
if (mail($to, $title2, $detail, $other)) {
$err_flg = 0;
} else {
$err_flg = 1;
}

// =================================================
//  自動返信メール処理
// =================================================
// メール本文を組み立てます。
$back_detail = "
$sei $mei 様

××××までご連絡ください。

▼お問い合わせ区分
$kbn

▼お問い合わせ内容
$com

※個人情報保護の為、お問い合わせ区分、内容のみ表示させております。

××××
HP: ××××
Mail: ××××
";

$back_detail = mb_convert_encoding($back_detail,"JIS","UTF-8");

//メールを送信する
if (mail($from, $back_title2, $back_detail, $back_other)) {
$err_flg = 0;
} else {
$err_flg = 1;
}
?>
<p class="fs20 fwb mb20">××××</p>
<div class="line mb20"></div>
<p class="mb20 lh20">
××××<br>
××××<br>
××××<br>
×××× </p>
<div class ="f_tel stdbox pa25 clearfix mb20">
<span class="tel fwb"><a href="tel:××××"><img src="<?php echo esc_url( home_url( ’/’ ) ); ?>wp-content/themes/××××" alt="××××" align="left">××××</a></span><span class="fr fwb fs18 mt3">( ×××× )</span><br>
<div class="mt10">※ ××××</div>
</div>
<p class="mb50 lh20">
××××<br>
××××<br>
×××× </p>

ID:4N.vWG

この後フォームの入力値を画面上で表示してる処理が無いのなら、
単純に
$v = htmlspecialchars($v);
の行をコメントアウトすれば文字が変換される事はなくなる。

ID:4N.vWG

ただ、おそらくはXXXXで消されてる中身が入力値だったりするパターンな気もするので、
そいつをちゃんとhtmlspecialchars()で括って処理すればOK。

ID:umRohh

Pタグだけなら、どっかでPに戻したらええんちゃう?

ID:layguL

そもそもを言えば、メールフォームでどこでPタグが入る余地があるのかっていう素朴な疑問も。

ID:K0iPf8 さんの回答

>表示されないようにする方法はないでしょうか
なぜ、作ってもらった人、もしくは、制作能力のある人に頼まないのでしょうか。誰がどう考えてもそれが一番簡単です。

最終更新日:2015-02-18 (2,252 views)

関連するトピックス

ページ上部に戻る