PHP 8.3 に戻しても再現するかどうかの確認はされましたか?
こんちには。
Contact Form 7 Multi-Step Forms を無効化して再現するかしないかをお試しください。
こんにちは!
おそらく、Contact Form 7 Multi-Step Forms で報告されている状況のようです。
Contact Form 7 Multi-Step Forms キャッシュ で検索すると、状況がわかりやすいかもしれません。キャッシュの問題であることは間違いなさそうですが、それがどれなのかわからないところにヤキモキしますよね。
こちらも似たような質問のようです。
ContactForm7 Multi-Step Formsで確認画面の情報が更新されない
キャッシュの解決ができず、それでも確認画面が必要なら、Snow Monkey Forms など、別のプラグインを使用することをオススメします。
みなさま、ありがとうございます。
本番環境でのみ起こっており、PHPバージョンの変更、全て使用しているプラグインのため無効化で原因を特定することができません。。
2) 時々、タグのみ表示された空メールが届く ※ショートコードが展開されていない状態のメール(1日に一通くらいの頻度)の事象に関しては、再現でき解決できそうです。
このプラグインのPRO Versionの説明の箇所に4KBいないのデータしか送信できないとあります。
私が作っていたフォームは項目数が多く、入力制限かけてはおりましたが、デベロッパーツールで確認しましたら、MAXの文字数使っていない場合で3.9KBほどになっていることを確認できました。
(デベロッパーツール > Applicationタブ > Cookies >cf7_msm_posted_dataのsizeで確認しました。)
MAXの文字数入力後(確実に4KBを超えたデータになっている)、確認ページに遷移すると
・Cookieのcf7_msm_posted_data項目自体が生成されていない
・確認の各項目も空の状態
・送信ボタンは使える状態
になっております。
ここで送信ボタンをクリックすると正常に送信完了ページに遷移します。
しかし、正常に送信はされておらず、ショートコード未展開のメールが管理者宛に届いてしまいます。
またユーザーへの自動返信もショートコード展開されていないので送られていなかったです。
そのため、4KB以内になるようもう少し厳格に入力制限をかけるか、プラグイン利用しないで確認画面を設けるかの検討をしようと思っております。
https://ja.wordpress.org/plugins/contact-form-7-multi-step-module/
すみません。
私自身がネットワークに対してとても詳しいわけではありませんので、その前提ではありますが、
1) 時々、他人が入力した個人情報が確認画面で表示される ※別PCからの入力、同一ネットワークとのこと
他の方が入力した確認画面が表示されるのは、社内の同一ネットワークの場合のみでしょうか?
その場合、「プロキシキャッシュ」が悪影響を与えている場合も考えられると思いました。
https://www.ipa.go.jp/archive/security/vuln/programming/web/chapter5/5-5.html
社内のシステム管理者の方への問い合わせが可能であれば、ご確認いただけたらと思います。
こんにちは。
その後どうですか? まだ解決には至りませんか?
解決できて良かったです。お疲れ様でした。
ちなみに、何が原因で、どのような対処を行なって解決したか、共有いただけますと嬉しいです。
このサポートフォーラムは、コミュニティーの共有ナレッジの役割もあるためです。
また、このトピックのステータスを「解決済み」に変更していただけますか?
どうぞよろしくお願いいたします。
解決しました。
【原因と解決方法】
1) 時々、他人が入力した個人情報が確認画面で表示される ※別PCからの入力、同一ネットワークとのこと
→ 原因はみなさんがご教授してくださったようにキャッシュの設定に問題がありました。
解決策として、.htaccessでお問い合わせフォーム入力・確認ページにCache-Control ヘッダでCache-Control: no-cache,must-revalidate,no-storeを設定しました。
2) 時々、タグのみ表示された空メールが届く ※ショートコードが展開されていない状態のメール(1日に一通くらいの頻度)
→ 原因は、Contact Form 7 Multi-Step Formsの無料版プラグインでは4KBのデータしか扱えないことでした。
Contact Form 7 Multi-Step Formsの無料版プラグインでは、入力フォーム内容を確認ページにまで持ってくるのにcookie(cf7_msm_posted_data)に保管して実現していました。
入力項目が多い場合、この送信データがCookieに保存できる4KBサイズを超えてしまいます。
サイズ制限によりCookieが正しく保存されないと、Contact Form 7 Multi-Step Formsが参照するデータがが空になってしまい、ショートコードが展開できない状態になってしまうのではないかなと考えております。
私たちがとった解決策としては、現状項目数も多く、増える可能性が高いため、確認画面作成にContact Form 7 Multi-Step Formsの無料版プラグインを使用しないことにしました。
Cookieが正しく保存できなかった場合のエラー表示がでるといいなと思いました。
一度確認画面に行き、再度入力画面に戻り追記・変更を行った場合に、以前入力したデータが出てしまうこともあります。
これも追記・変更を行った際4KBを超えていると、Cookieが正しく保存できなかったために起きるのかなと思います。
※日本語だと基本1文字あたり3バイトなので、バッファをとって総文字数をmaxlengthで1000文字以内になるように調整はしていましたが、入力内容で改行・画数の多い漢字・特殊文字を入れたりすると、内部処理で4KBを超えてしまうこともできてしまい、Cookie(cf7_msm_posted_data)が生成されません。
Thank you all very much for your help! We are able to solve the problems.!
【Symptoms】
1) Sometimes, personal information entered by another person appears on the confirmation screen. According to the client, this happens from a different PC but on the same network.
→ Reason: There was a problem with the cathe settings.
To fix it : we added this to header (input contact page and cinfirmation page).
.htaccess : Cache-Control: no-cache,must-revalidate,no-store
2) Sometimes, an empty email is received in which only the tags are displayed — the shortcodes are not expanded.(1 mail per day)
→ Reason: We think this happens because the free version of this Contact Form 7 Multi-Step Forms can save only 4KB of input data.
The Plugin keeps the form data in a cookie (cf7_msm_posted_data).
If the form has many letters, the cookie can become bigger than 4KB.
When the cookie is too big, the browser can’t save it.
Then the plugin gets empty data.
With empty data, the shortcode cannot change into correct inputed text.
So the email shows only the shortcode.
Because this problem happened sometimes, and the form we created had many input fields, we decided not to use the free version of this Contact Form 7 Multi-Step Forms to make the confirmation page.
Note:
If the cookie is not saved, other problems may also happen, like:
・ The confirmation page shows old data
・ The form shows wrong input after going back and changing it