Bug(バグ) #2584
未完了プロフィール編集画面にて、国または地域のVALUE一覧に無い値で送信すると、その編集したメンバーのプロフィール画面で500エラーが発生する
0%
説明
Overview (現象)¶
プロフィール項目に「国または地域(op_preset_country)」が使われている場合、
メンバーがプロフィール編集画面にて、profile[op_preset_country][value]の値(value)をFirebug等を用いて、「国または地域」のプルダウンにない値(例えばprofile[op_preset_country][value]=JAPANESE とする等)を送信した場合、そのメンバーのプロフィール確認画面(もしくは他のメンバーが、上記のような行為を行った該当メンバーのプロフィールページ)を覗こうとした時に
そのページで500エラーが発生する。
以下はそのエラー文。
500 | Internal Server Error | InvalidArgumentException
The country JAPAN does not exist.
Causes (原因)¶
lib/form/doctrine/MemberProfileForm.class.php のバリデーターがプリセットのプロフィール項目の値に対して甘い(プルダウンにある値以外の値を受け取ったときの例外処理を行なっていない)からだと思われる。
Environment (再現環境)¶
OpenPNE 3.6.0
Way to repro (再現手順)¶
1. 管理画面の「プロフィール項目設定」でプリセットの「国または地域」を使用するように設定する。
2. プロフィール編集ページ(/member/edit/profile)にアクセスする。
3. Web Developerで「国または地域」のselect要素をinput要素に変換する。
4. 「JAPAN」と入力して送信ボタンをクリックする。
5. プロフィール編集が完了して、プロフィール確認画面に遷移する。
6. 「プロフィール確認ページ」(/member/profile)を開くと500エラーが発生する。
Yuma Sakata さんが約13年前に更新
- 3.6 で発生するか を Yes (はい) にセット
- 3.4 で発生するか を Yes (はい) にセット
再現確認できました。
Environment (再現バージョン)¶
OpenPNE3.4.18
OpenPNE3.6.1
Way to repro (再現手順)¶
1. 管理画面プロフィール項目登録ページ(/pc_backend.php/profile/edit)にアクセスする
2. プリセットの「国または地域」を使用するように設定する
3. プロフィール編集ページ(/member/edit/profile)にアクセスする
4. Web Developer で「国または地域」の select 要素を input 要素に変換する
5. 「JAPAN」と入力して送信ボタンをクリックする
6. 500エラーが発生する
Way to fix (修正内容)¶
500エラーが発生しないように修正お願いします。
備考¶
チケット説明文、再現手順4. 「JAPAN」と入力して送信ボタンをクリックする
上記実行後、500エラーが発生しました。