We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 19033
    • 892 Posts
    ZeRoさん。ありがとうございます。
    判明しました。。

    先日、「管理画面ログイン画面」でのパスワードリマインダから送信される
    メールが文字化けしているので、php.iniに以下の一行を追加したのですが

    mbstring.func_overload = 1


    これを入れたことにより、eFormから送信されるメールの
    2バイト文字のタイトルが、先に書いたような状態で送信される
    ようになった模様です。。

    今、上記の1行を削除し、eFormから再度送信したところ、
    タイトルもきちんと日本語で表示されました。

    この一行があると、reportテンプレート中のたとえば、<p></p>などが
    メール本文中にそのまま(文字として)出力されるのですが、この1行をなくすと、
    <p>~</p>が段落として認識されるようになりました。

    したがって、eFromのバージョンによる違いなどでなはなく、
    原因は、こちらのphp.iniの設定によるものでした。。
    すみません。。
      • 33488
      • 429 Posts
      なるほど、MIME化されたのをまたMIME化されちゃったつうことですね
      そういえば、OEひさびさに使ってみてメールソースが見れなかったなぁと今気づいたり・・・
        • 33488
        • 429 Posts
        EUC-JPのLangファイル名がおかしいのに気がつきました :’(
        とりあえず、EUC-JP版をお使いの方はjapanese-euc-jp.incになっているものをjapanese-euc.inc.phpにしてアップロードしてください。
        また、日本語になっている箇所は好きなように修正して使ってください。
        バリデーション関係の文言は、サイトのイメージに合わせたメッセージにしたほうがよいでしょう。
        ちょっとそっけないので undecided
          • 33488
          • 429 Posts
          上の言語ファイル名問題の修正版をトピックス先頭にあげときました。
            • 19033
            • 892 Posts
            こんにちは。あの、少しお願いが。。

            エラーメッセージの部分をリスト表示にしたくて、悪戦苦闘したのですが、
            一部はうまくいってるようなんですけども、場合によって?うまく、
            htmlコードを書き出してくれないようなのです。

            いちおう、自分で変えたのをここに貼ってみます。
            良かったら、見て頂けると嬉しいのですが。。。

            eform.inc.php と japanese-utf8.inc.php です。

            言語ファイルに書いて良いものかどうかも、わからず。。
            eform.inc.php の方は2カ所替えてあって、エディタなどで「MEGU」
            で検索して頂くと、直した箇所がヒットすると思います。
            しかし、ここを直して良かったのかどうかも、まったく手探りで。。

            できれば、うまくリスト表示できるように手を入れて頂けたら、
            うれしいのですが。。すみません。いつもお願いばかりで。。
            よしくおねがいします。。
              • 33488
              • 429 Posts
              今頃気づきました。 すでに解決済みかも知れませんが・・・。

              2つの修正箇所がありましたが、先頭の修正箇所を以下のようにしたらどうでしょう?
              290行目あたりを
              			$vtmp = "<ul><li>";
              			$vtmp = implode("</li><li>",$vMsg);
              			$vtmp = substr($vtmp,0,-4);
              			$tmp .= $vtmp."</ul>";
              

              1030行目あたりのは修正はなくてもいいと思います。
              ってなことで
                • 19033
                • 892 Posts
                ZeRoさん。いつもどうもありがとうございます。
                こちらこそ、お返事が遅くなり、ごめんなさいです。

                教えて頂いたとおり、コードを変更してみたのですが、
                htmlタグが上手く生成されないみたいなのです。

                eFormのエラーメッセージって一カ所?に固まってなくて、
                ばらけて存在しているみたいです?

                たとえば、ある、条件で出力されるエラーメッセージ群であれば、
                ZeRoさんのソースでうまくいくのかも知れません。

                具体的な状態を書きますと、

                <div class="errors"> … 言語ファイルから読み出し
                 <strong>いくつかのエラーが見つかりました</strong><br /> … 言語ファイルから読み出し
                   メッセージの種類は、必須項目です<br /> … 言語ファイルから読み出し
                   有効なコードではありません</li> … 言語ファイルから読み出し
                 <li>お名前 » お名前を入力してください</li></li> … フォームの入力チェックで記述したエラーメッセージ
                 <li>メールアドレスは、有効なメールアドレス形式ではありません</li>… 言語ファイルから読み出し
                 <li>メッセージ » メッセージを入力してください … フォームの入力チェックで記述したエラーメッセージ
                < … これはなんだろ?(私がどこかで記述ミスしているかも...)
                </ul> 
                </div> … 言語ファイルから読み出し


                こんな感じになっていて、ZeRoさんのソースの最初の「$vtmp = "<ul><li>";」が
                なんかどこかにいってしまってるみたいなんです。。
                  • 33488
                  • 429 Posts
                  すいません、間違えてました

                  $vtmp = implode("</li><li>",$vMsg);
                  $vtmp = substr($vtmp,0,-4);
                  $tmp .= "<ul><li>".$vtmp."</ul>";
                  

                  だと、一箇所表示ならいけそうな・・・
                  各項目の箇所箇所で表示のしくみが理解できてなかったり・・・
                    • 19033
                    • 892 Posts
                    こんにちは。
                    どうもありがとうございます。ソースを変更して試してみました。

                    言語ファイルの「$_lang["ef_validation_message"]」が大外のタグをはき出しているようなんです。
                    デフォルトでは以下のようになっています。
                    $_lang["ef_validation_message"] = "<div class=\"errors\"><strong>いくつかのエラーが見つかりました</strong><br />[+ef_wrapper+]</div>";

                    で、この[+ef_wrapper+]のなかに、エラーメッセージ群が放り込まれるってことですよね?

                    例えば、メールアドレスに関するエラーメッセージだけを表示させてみました。
                    このエラーメッセージは、言語ファイル「$_lang["ef_invalid_email"] = "は、有効なメールアドレス形式ではありません";」から
                    読み込まれていると思うのですけれども、htmlは以下のようになりました。

                    <div class="errors">
                    <strong>いくつかのエラーが見つかりました</strong><br />
                    <ul>
                     <li>メールアドレスは、有効なメールアドレス形式ではありま�
                    </ul>
                    </div>

                    リストの最後の</li>が表示されない状態です。言語ファイルに</li>を書いちゃえば
                    いいでしょうか。。?でもそうすると、言語ファイルのなかの全部のエラーメッセージの
                    最後に</li>を書かないとダメってことですよね...?

                    また入力フォームに書いたエラーメッセージだけを表示してみますと以下のようになりました。
                    <div class="errors"><strong>いくつかのエラーが見つかりました</strong><br /><ul><li>お名前 » お名前を入力してくだ�</ul></div>


                    そして、「$_lang["ef_required_message"] = "{fields}は、必須項目です
                    ";」だけを表示させると
                    <div class="errors"><strong>いくつかのエラーが見つかりました</strong><br />お名前は、必須項目です<br /><ul><li></ul></div>

                    このようになります。。
                      • 33488
                      • 429 Posts
                      あちゃ、簡単にはいかないっすねぇ
                      vMsgの配列のメッセージをなんとかすればいいかと思いますが、どうやらそれだと駄目っぽいですね
                      ちなみに、文字化けしちゃうのはミスでした
                      $vtmp = implode("</li><li>",$vMsg);
                      $vtmp = substr($vtmp,0,-4);
                      

                      ではなくて
                      $vtmp = implode("</li><li>",$vMsg);
                      $vtmp .= "</li>";
                      


                      これで、つじつまは合うようになるんですけど、必須項目の表示はef_required_messageの方にLI付の記述をしないと駄目ですね。
                      後は、
                      [+ef_wrapper+]が味噌なので
                      ULはこっちに書いてしまって、vMsgや上記の必須の方はLIタグで囲めばいけるのかも???