We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 6350
    • 421 Posts
    引き続き eForm の勉強中です。
    フォームメールで画像認証を使いたいと思い以下のコードに赤字の部分を追加しましたが実行しても有効なコードではありませんのメッセージが表示されます。(・・?
    急ぎませんのでどうかお力添えをお願いいたします。

    ドキュメント Contact Us
    -------------------------------------------------------------------------------------
    [!eForm? &vericode=`1` &formid=`ContactForm` &subject=`[+subject+]` &to=`[(emailsender)]` &ccsender=`1` &tpl=`ContactForm` &report=`ContactFormReport` &invalidClass=`invalidValue` &requiredClass=`requiredValue` &cssStyle=`ContactStyles` &gotoid=`46` !]

    チャンク ContactForm
    -------------------------------------------------------------------------------------
    ・
    ・
    ・
    <label for="cfMessage">メッセージ:
    <textarea name="message" id="cfMessage" rows="4" cols="20" eform="Message:textarea:1"></textarea>
    </label>
    <p>お手数ですが見えている文字列を入力してください
    <img src="[+verimageurl+]" alt="認証コード" width="148" height="60" />
    <label for="cfVericode">認証コード
    <input name="vericode" id="cfVericode" size="20" type="text" /></label></p>


    <label>&nbsp;</label><input type="submit" name="contact" id="cfContact" class="button" value="メッセージの送信" />
    </fieldset>
    </form>
    -------------------------------------------------------------------------------------
    参考文献
    modxパッケージ内のドキュメント /assets/snippets/eform/docs/eform_examples.htm
    MEGUさんのHP Let’s enjoy MODx|eFrom (1.4.4)
    フォーラム記事 eFormについて
      • 36592
      • 970 Posts
      デモコンテンツに赤字で書かれたところをほぼそのままコピペで追加して使ってみましたが、
      こちらでは問題なく動作してるみたいですけどね~ ...? なんでだろ?

      そのエラーメッセージは認証コードの不一致が原因だと思うんですが、
      まさか何度やっても毎回入力ミスってことはないでしょうし... tongue

      eForm本体を改造されたとかありますか?
        • 6350
        • 421 Posts
        tkfm さん、毎回検証いただきありがとうございます。

        検証不足の点があったことをお詫びいたします。
        指摘のあったところを見直すために今まで時間がかかりました。

        原因 共有SSLを使用した場合に画像認証に失敗する。
          独自ドメインの場合には問題ありません。
          共有SSLに関しては http:// へのアクセスに戻したつもりでしたが <base href="https://~が残っていました。
          共有SSLを使用した場合には CAPTCHA画像 への参照のみ http://~となる。
          各種共有SSL対応スニペット、プラグインでの確認はしておりません。
          ただし FireFox3 ではSSL警告が表示されずに見逃していました。
          今回の検証時に IE7 で表示し警告が表示されたためはじめて気が付きました。

        対策 共有SSL対応スニペットでの確認
          共有SSLに対応した Encryption で解決できるのか試してみたいと思います。
          現在は自作スニペット を使用中での不具合の可能性が大です。

        Encryption に関してはすでに3日以上格闘している状況ですがいまだに設定ができないため改めて相談させていただくかもしれませんのでよろしくお願いいたします。(*^_^*)
          • 6350
          • 421 Posts
          今気が付いたのですが、今回失敗の原因は共有SSLが原因ではなく Wayfinderで生成される[+wf.link+]を修正したい で適当にごまかしたのがいけなかったのかもしれません。

          ここを元に戻し、WayFinder Diito に手間を掛ければ Encryption スニペットを使う理由もないかもしれません。
            • 6350
            • 421 Posts
            結果を早く出すため CAPTCHA画像へのリンクを https://に強制的に書き換えて確認してみました。

            無事、共有SSL を使っても問題なくメールが送れることを確認しました。
            WayFinder Diito での設定方法、また Encryption の利用に関しては今後の課題です。
              • 36592
              • 970 Posts
              共有SSLって別サーバー経由になるやつでしたっけ? XREAみたいな...

              CAPTCHAの仕組みって、確かクッキーだかセッションだかに認証コードの値(ハッシュ値?)を記憶しておいて、
              ブラウザから入力された値とこの「記憶値」を比較して認証してるようなことを読んだ気がするので、
              コード発行時とブラウザからの値のPOST時にサーバーが変わっちゃうと動かないような...
              だから「https://...」に変えたら動いたのかな?

              と、良く分かってないまま曖昧なことばかり書いてもいけませんね。 tongue
                • 6350
                • 421 Posts

                最終的に eform.inc.php の L567~L570 の赤字部分を削除することにしました。これじゃ独自ドメインSSL しか考えられていないとしか思えない書き方です。でもバージョンアップのたびにこんなことしたくない。
                -------------------------------------------------------------------------------------
                if($vericode) {
                $_SESSION[’eForm.VeriCode’] = $fields[’vericode’] = substr(uniqid(’’),-5);
                $fields[’verimageurl’] = $modx->config[’base_url’].’manager/includes/veriword.php?rand=’.rand();
                }
                -------------------------------------------------------------------------------------


                他にもいたるところに同じような記述が見受けられます。 chunk.form.inc.html L70~L73
                -------------------------------------------------------------------------------------
                [+jot.captcha:is=`1`:then=`
                <div style="width:150px;margin-top: 5px;margin-bottom: 5px;"><a href="[+jot.link.current:esc+]"><img src="[(base_url)]manager/includes/veriword.php?rand=[+jot.seed+]" width="148" height="60" alt="If you have trouble reading the code, click on the code itself to generate a new random code." style="border: 1px solid #003399" /></a></div>
                <label for="vericode[+jot.id+]">Help prevent spam - enter security code above:
                <input type="text" name="vericode" style="width:150px;" size="20" id="vericode[+jot.id+]" /></label>&nbsp;
                `:strip+]
                -------------------------------------------------------------------------------------


                こちらはウェブサインアップ用のコードです。 websignup.inc.php L465~L478
                この書き方が基本となるべきで他もこの方法に統一してくれれば一番楽なんです。
                -------------------------------------------------------------------------------------
                <td>
                <input type="text" name="formcode" class="inputBox" style="width:150px" size="20">
                <a href="[+action+]"><img align="top" src="manager/includes/veriword.php?rand=<?php echo rand(); ?>" width="148" height="60" alt="If you have trouble reading the code, click on the code itself to generate a new random code." style="border: 1px solid #003399"></a>
                </td>
                -------------------------------------------------------------------------------------


                本当は config.inc.php の中の処理で base_url に共有SSL のアドレスが指定できれば一番楽なんですが。この辺の変更方法がいまいちわかりません。
                  • 26012
                  • 324 Posts
                  Quote from: dainiti at Jan 25, 2009, 10:01 PM

                  本当は config.inc.php の中の処理で base_url に共有SSL のアドレスが指定できれば一番楽なんですが。この辺の変更方法がいまいちわかりません。
                  「サイト全体ではなく特定なページだけ」という前提でしょうから、恐らく的を外してると思いますが、
                  ツール > グローバル設定 > サイト > サーバータイプ  なんかも関係します?
                  私はこの設定をhttpsにしたことがないので、この設定の影響範囲(どのモジュールのどこに影響するか)はよく知らないのですが・・・
                    • 6350
                    • 421 Posts
                    Quote from: sama55 at Jan 25, 2009, 10:30 PM

                    「サイト全体ではなく特定なページだけ」という前提でしょうから、恐らく的を外してると思いますが、
                    全体ならもっと簡単に変更箇所も少なくできるのですが一部のページを切り替えるためだけに多くの苦労が発生します。
                    たとえば Joomla はページ編集ごとに SSL を利用する・しないを設定できますがやはり共有SSLのアドレスを指定することはできません。対応しようと思えば難しくはないと思うのですが。たぶん共有SSL の存在意義が開発時の補佐的な位置づけとしか考えられていないのだと思います。

                    modx では共有SSLのアドレスで Contact Us にアクセスした後
                    https://ss1.coressl.jp/xxx.s78.coreserver.jp/modx/contact-us.html

                    WayFinder Diito のページリンクには以下のようにセットされてしまいます。(変更なしの config.inc.php の場合)
                    https://ss1.coressl.jp/modx/contact-us.html

                    それではまずいので config.inc.php 内で base_url site_url に http://xxx.s78.coreserver.jp/modx/ を返すようにしているのが本当の理由です。その変更が $fields[’verimageurl’] = $modx->config[’base_url’].’manager/includes/veriword.php?rand=’.rand(); にまで及んでいるというのが理由です。自業自得 :’(

                    だからこれについては自分の都合を人に押し付けているだけかもしれません。

                    それに、たぶんこれは modx の責任ではなく $_SERVER 環境変数にドメイン名が https://ss1.coressl.jp/xxx.s78.coreserver.jp/ として取得できないのが原因だと思うのですが config.inc.php のなかで https:// でアクセスされた場合のドメイン名を指定できればそこの一箇所だけの変更で美味く収まるのではないかという期待があります。

                    ショッピングサイトなどであれば当然 ドメインSSL を購入してもらえば問題ないわけですが費用のかからない 共有SSLにもメールフォームなどの用途にはすこしだけ検討する価値があるのかなと思っています。メインのさくらレンタルサーバーには共有SSL はないのでかなり無駄な苦労をしているような気もします。

                    でもまあ、需要もあるから共有SSL に対応した Encryption のようなスニペットも登場するのだと思いますが。わずか数十行なので modx に組み込んでもらえると「ありがとう」なのですよ。だからこそスニペットなのかもしれませんが?

                    Quote from: sama55 at Jan 25, 2009, 10:30 PM

                    ツール > グローバル設定 > サイト > サーバータイプ  なんかも関係します?
                    私はこの設定をhttpsにしたことがないので、この設定の影響範囲(どのモジュールのどこに影響するか)はよく知らないのですが・・・
                    ここも何度か変えながら確認してみましたがどこの動作にも反映されないようです。ソースコードにもそのための判定箇所は今のところ見当たりません。せめて管理画面へのログイン時にSSL に切り替わるのかなと思ってみたりしたのですが。
                      • 26012
                      • 324 Posts
                      なるほど。。。

                      同じ要領で検索してると思いますが、"ssl"/"https"の検索で上位にヒットするネタは以下。

                      http://modxcms.com/forums/index.php?topic=20661.0  スレ主:soushiさん
                      http://modxcms.com/forums/index.php?topic=32190.0  スレ主:dainitiさん
                      http://modxcms.com/forums/index.php?action=printpage;topic=19230.0
                      http://modxcms.com/forums/index.php?topic=25265.0
                      http://modxcms.com/forums/index.php?topic=5695.0;wap2
                      http://modxcms.com/forums/index.php?topic=17903.0

                      情報が少ないがゆえに、dainitiさんの取り組み、意味があると思いますよ。
                      幾つかのアプローチが試されてるようですが、特定なページをSSL対応にする必勝パターンは、
                      soushiさん作「sslSwitcher 1.02」なんでしょうかね?(フォーラム内の記事がうまくまとまりません)