サポート » プラグイン » Contact Form 7でselectのみHTMLが書き出されない

  • Contact Form 7のタグに関するご質問です。

    WordPress3.0.4上に、ver.2.4.3をインストールしました。
    『select』を使用しようとしておりますが、
    なぜか、『select』『checkbox』等の選択肢関連の機能のみHTML内に書き出されずに困っております。
    いくつかのサイトで使用させていただいておりますが、今回の事例と他サイトとの違いは、単純にWIndowsサーバがベースであること、PHPやMySQLのバージョンが微妙に違うことかと思います。
    試しに
    1)2.4.2(他のLinuxサーバで全く同じプラグイン構成、コンテンツで動作してる物)を入れなおしてみましたが、これでも駄目でした。
    2)他のプラグインをオフにしてみましたが、ダメでした。

    PHPは、Version 5.2.9-2で、『ISAPI extension として実行中』です。
    MySQL は5.0.83です。

    具体的には、

    <p>都道府県(必須)
    [select menu-535 include_blank "北海道" "青森県" "岩手県" "秋田県" "宮城県" "山形県" "福島県" "群馬県" "栃木県" "茨城県" "埼玉県" "東京都" "千葉県" "神奈川県" "新潟県" "石川県" "富山県" "長野県" "福井県" "岐阜県" "山梨県" "愛知県" "静岡県" "京都府" "滋賀県" "兵庫県" "大阪府" "奈良県" "三重県" "和歌山県" "鳥取県" "島根県" "岡山県" "広島県" "山口県" "香川県" "愛媛県" "徳島県" "高知県" "福岡県" "佐賀県" "長崎県" "大分県" "熊本県" "宮崎県" "鹿児島県" "沖縄県"]</p>

    と記述しても、

    <p>都道府県(必須)<br />
    </p>

    と書き出されてしまいます。

    なにか原因や解決策などなど考えられますでしょうか。

    お手数ですが、なにかヒントだけでも教えて頂けると嬉しく思います。
    よろしくお願いいたします。

15件の返信を表示中 - 16 - 30件目 (全40件中)
  • tak augaさん

    スミマセン。

    お断りいただいているところにお返事するのもアレなのですが

    Contact Form 7上で、きちんと設定して保存したあとは(ほぼ)大丈夫なんですが、
    次にどこかをいじるために開くと、その時点で通常の文字に変換されてしまうので、

    保存するときに、必ずエンコードして保存するように出来れば、いいんじゃないですか?

    またまたちょっとした思い付きなのでスルーしていただいてかまわないのですけど、エスケープが効かないのはエスケープ文字がどこかで削除されているからではないかと。

    で、Contact Form 7の管理画面で登録されたフォームデータはDBに入っているんですよね?DB上でエスケープ文字が残っていれば表示の時、残っていなければDB登録時にエスケープ文字を削除されているのではないですかね?

    サーバー側の設定が変更できないとなれば、Contact Form 7の該当のエスケープ削除部分を修正するしか方法がないのかな?とも思います。

    Windowsの実験環境を作れないので再現したり調査したりできないのが…残念です。

    トピック投稿者 tak auga

    (@tak-auga)

    nobitaさん、度々ありがとうございます。
    念のため、再度やってみました。

    が、表示は出来ているのですが、
    今度はユーザーからの送信時に『栃木県』『島根県』を選択すると、
    入力してないことになって、入力漏れアラートが出て、
    送信できませんでした。

    ん〜、うまくいきません。

    —–
    shokun0803さん、ありがとうございます。
    DB側のデータも改めてチェックしてみます。

    モデレーター Takayuki Miyoshi

    (@takayukister)

    エスケープしたり実体参照で記述したりというのは、根本的な解決にはならないと思うので、やめといたほうがいいんじゃないですか?

    ホスティングサービスのサポートの人とか、相談できないんでしょうか。

    トピック投稿者 tak auga

    (@tak-auga)

    やはり、根本的な解決が望ましいですよね(汗

    ホスティングのサポートとは相談しているんですが、
    基本、お決まりの『教えられません』ということなんですね。
    で、出来るだけ今後はマニュアルなどの拡充も含めて…云々というレベルです。

    問題があること自体は、理解していただけており、
    対応してくださっている方の対応自体も良いんですが、
    解決策そのものには言及できないと。

    なかなか難しいところです。

    もう少し気合でやってみて、難しそうなら
    最悪はホスティングの乗り換えを進言したいところですよね…
    難しいかとも思いますが。

    WordPressやContact Form 7の
    Windowsサーバ上での動作や設定等については、
    知識のある方が少ないようであれば、
    是非この機会に情報・解決策などが得られると
    色んな意味で良いんだと思うのですが。

    モデレーター Takayuki Miyoshi

    (@takayukister)

    そうですかー むずかしいですね。

    ログ見れたらそれだけで大分違ってくると思うんですけど、それも無理なんですかね。

    トピック投稿者 tak auga

    (@tak-auga)

    今のところ、ログは見られないです〜。
    どこかで出せそうな気もするので、いろいろ調べてみてますが。

    こんにちは

    が、表示は出来ているのですが、
    今度はユーザーからの送信時に『栃木県』『島根県』を選択すると、
    入力してないことになって、入力漏れアラートが出て、
    送信できませんでした。

    ソースのvalue 属性が空になっているという事なら、esc_attr()や、esc_html()の挙動による可能性があるかもしれません。

    esc_attr()は文字列をチェックして、気に入らないと空白を返す事があると思います

    以下のコードをindex.php に直接貼り付けて、空欄になるかどうかチェックしてみてはどうでしょう

    <?php echo
    '<div title="' . esc_attr( '栃' ) . '"' . $selected . '>' . esc_html( '栃' ) . '</div>';?>
    トピック投稿者 tak auga

    (@tak-auga)

    nobitaさん、ありがとうございます。

    やはり空になるようですね…

    tak augaさん

    だったら、プラグインの問題というより、WordPress関数由来の問題かもしれませんね。

    私のほうでは、tak augaさんの環境が再現できないので、以下のようなコードで試してみたのですが、utf-8とか、utf-7とかやるとそれなりの結果が出るんですが、

    <?php
    		 echo '<div title="' . esc_attr( mb_convert_encoding("宮","UTF-8","auto") ) . '"' . $selected . '>' . esc_html( mb_convert_encoding("宮","UTF-8","auto")  ) . 'marker</div>';
    echo '<div title="' . esc_attr( mb_convert_encoding("宮","UTF-8n","auto") ) . '"' . $selected . '>' . esc_html( mb_convert_encoding("宮","UTF-8n","auto")  ) . 'marker</div>';?>

    両方とも消えるか、化けるかの結果にしかなりませんでした

    私だったら、実験的には、コンタクトフォームのmodules/select.php の80行くらいにある
    option エレメントの、 esc_attr() esc_html()を一度はずして挙動を見ると思います

    感では、栃が表示できるようになるので、他のエスケープ関数でどうか、チャレンジします。

    例えば、

    echo "1".attribute_escape( '栃' );
    esc_attr_e('2 栃' );
    echo esc_attr__( '4 栃' );
    echo esc_attr( '6栃' );
    echo js_escape( "7栃" );
    echo esc_js( "7栃" );

    でも、私、このプラグイン使った事ないですし、セレクト.php あった~、ちらみ めっけ
    ぐらいなので、ぜんぜん違う事かもしれないです

    でも、ちらみしただけでも、すごいのがわかりますね このプラグイン

    mbstring 周りをいろいろ変えたり、あちこちphp設定変えたりしたけど、再現できませんでした。
    nobitaさんのトライ方法を支持します。

    トピック投稿者 tak auga

    (@tak-auga)

    nobitaさん、kvexさん、ありがとうございます。
    試してみます。

    そろそろ、結論を出さないといけないので(汗

    >> tak auga さん
     殆ど同じタイミング同じトラブルに遭遇している方が居て少し安心(って問題の解決には何の役にも立たないのですけど(;^_^A)。
    http://ja.forums.wordpress.org/topic/6133?replies=2

     私の同症状が出ている環境はMac OS X 10.6.6 / Xampp上のApache/2.2.14 (Unix) PHP/5.3.1 WordPress 3.0.4 (Ja) です。

     今mysqlサーバが起動できないトラブルに見舞われていて『栃』『根』を消す実験は出来ない状態なのですが、たぶん同じ結果になりそうな気がします。

    モデレーター Takayuki Miyoshi

    (@takayukister)

    nobita さんの方法は問題の検証としては意味があると思いますが、esc_attr() や esc_html() は Contact Form 7 に限らず WordPress のいたるところで使われているので根本の解決にはなりません。今後『栃』や『根』の字をほかの場所で使わない保証はないでしょう?

    もう少しがんばって絞り込むなら、esc_attr() と esc_html() で共通して使われている wp_check_invalid_utf8() を試されると良いと思います。例えば以下のようなコードをテーマのテンプレートファイルなどに仕込んだ場合になんと表示されるか。

    <?php
    echo wp_check_invalid_utf8( '栃木県' );
    echo wp_check_invalid_utf8( '東京都' );
    echo wp_check_invalid_utf8( '島根県' );
    ?>

    もしこれで東京都しか表示されないようならさらに wp_check_invalid_utf8() 内部で使われている処理を検証できます。

    勘でいうと、調査を進めるうちにどこかで PHP のバグかなにかに出くわすと思います。バグ報告が公開されているかもしれません。もしそういう情報が見つかれば、サーバーの乗り換えも理由を説明しやすくなるんじゃないでしょうか。

    >> Takayuki Miyoshi さん
     早速試してみました。
     ウチの環境(前述)では三つも表示されました。

15件の返信を表示中 - 16 - 30件目 (全40件中)
  • トピック「Contact Form 7でselectのみHTMLが書き出されない」には新たに返信することはできません。