#3784 closed defect (fixed)
フォームの内容に不備がありリダイレクトされた場合、フォームに編集内容が保持されない場所がある
Reported by: | kiwa | Owned by: | urabe |
---|---|---|---|
Priority: | minor | Milestone: | OpenPNE2.13.8 |
Component: | 指定しない | Version: | 2.12.x & 2.14.x |
Keywords: | Cc: |
Description (last modified by )
■現象
- 作成・編集などのフォーム画面を表示
- フォームに不備がある状態でsubmitボタンを押下
- エラーで1の画面に返される
携帯版で上のような流れを行った場合、手順3で返された画面に手順2で入力した内容が保持されていない画面がある。
■発見箇所
携帯版
- 日記作成・編集
- メッセージ作成
- アルバム作成・編集
PC版
- 日記編集
- 下書きメッセージ編集
- アルバム編集
■原因
投稿処理アクション(do)でエラーが出た際、openpne_redirectを使用しているため、クエリ情報が受け渡されていないため。openpne_redirectの代わりにopenpne_forwardを使えばいいかもしれない。
またそれに伴い、それぞれのpageも修正が必要。
■修正内容
携帯版とPC版で、発生原因が異なる。
携帯版は、openpne_redirect()の部分をopenpne_forward()に置き換え、コントローラ部では表示内容を直前のフォーム内容に置き換えた。
PC版は、ifの条件文に問題があったため、if文自体を削除した。
■関連情報
Change History (57)
comment:2 Changed 13 years ago by
Description: | modified (diff) |
---|
comment:3 Changed 13 years ago by
Keywords: | OpenPNE2.13.8 added |
---|---|
Milestone: | → OpenPNE2.12.10 |
comment:4 Changed 13 years ago by
Owner: | changed from nobody to fukamachi |
---|---|
Status: | new → assigned |
comment:5 Changed 13 years ago by
Description: | modified (diff) |
---|---|
Summary: | 携帯版でフォームの内容に不備がありリダイレクトされた場合、フォームに編集内容が保持されない場所がある → フォームの内容に不備がありリダイレクトされた場合、フォームに編集内容が保持されない場所がある |
PC版の日記編集でも見つけたため、summaryを変更。 他にもリダイレクト時の値の保持について調べてみます
comment:6 Changed 13 years ago by
Description: | modified (diff) |
---|
修正方法がわかったのでDescriptionを追記。
ただし、仕様の疑問点として、ktai/templates/h_diary_edit.tplの上の部分
メールで投稿 写真を添付すると写真付き日記になります。 ※メール投稿では絵文字が反映されません
の表示フラグが、
14 ({if !$target_c_diary.c_diary_id && !$target_c_diary.body})
になっており、"本文なし"のエラーでは表示されるが、"タイトルなし"のエラーの場合は表示されないという一貫性のない挙動をする点が気になります。これはこれで理由があるのでしょうか?
comment:7 follow-up: 8 Changed 13 years ago by
redirectのまま、$requestsの内容を受け渡す形にしてテストしてみました。
--- h_diary_edit_insert_c_diary.php (リビジョン 11320) +++ h_diary_edit_insert_c_diary.php (作業コピー) @@ -23,12 +23,20 @@ // ---------- if (is_null($subject) || $subject === '') { - $p = array('target_c_diary_id' => $target_c_diary_id, 'msg' => 2); + $p = array(); + foreach ($requests as $key => $value) { + $p[$key] = $value; + } + $p['msg'] = 2; openpne_redirect('ktai', 'page_h_diary_edit', $p); } if (is_null($body) || $body === '') { - $p = array('target_c_diary_id' => $target_c_diary_id, 'msg' => 1); + $p = array(); + foreach ($requests as $key => $value) { + $p[$key] = $value; + } + $p['msg'] = 1; openpne_redirect('ktai', 'page_h_diary_edit', $p); }
すると、リダイレクト後に入力が文字化けしました。おそらく二重でエンコードされているせいだと思います。何かいい方法があればいいんですが・・
comment:8 Changed 13 years ago by
値を受け渡すだけならarray_mergeでよかったです。
if (is_null($subject) || $subject === '') { $p = array('target_c_diary_id' => $target_c_diary_id, 'msg' => 2); - openpne_redirect('ktai', 'page_h_diary_edit', $p); + openpne_redirect('ktai', 'page_h_diary_edit', array_merge($requests, $p)); } if (is_null($body) || $body === '') { $p = array('target_c_diary_id' => $target_c_diary_id, 'msg' => 1); - openpne_redirect('ktai', 'page_h_diary_edit', $p); + openpne_redirect('ktai', 'page_h_diary_edit', array_merge($requests, $p)); }
comment:10 Changed 13 years ago by
comment:12 Changed 13 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|---|
Owner: | changed from fukamachi to kiwa |
Status: | assigned → new |
2.12.xにマージします
comment:16 Changed 13 years ago by
Keywords: | 確認中 added; 差し戻し removed |
---|
comment:17 Changed 13 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
動作確認いたしました。
2.12x系の問題点
- 携帯で不備のある日記を新規投稿すると、内容が保持されない
- 携帯で日記の編集をすると、内容が保持されない
- 携帯で不備のあるメッセージを新規作成すると内容が保持されない
- 携帯でメンバーページより不備のあるメッセージを投稿すると内容が保持されない
- pcでアルバム編集しようとすると内容が保持されない
- pcでアルバム編集しようとすると内容が保持されない
- pcで日記編集しようとすると内容が保持されない
- pcでメッセージ下書きを編集しようとすると内容が保持されない
2.13x系の問題点
- アルバムの編集をすると内容が保持されない。
- 携帯で日記の編集をすると、内容が保持されない
- 携帯でメッセージの下書き編集をすると内容が保持されない
- 携帯でメンバーページより不備のあるメッセージを投稿すると内容が保持されない
- pcでアルバム編集しようとすると内容が保持されない
- pcで日記編集しようとすると内容が保持されない
- pcでメッセージ下書きを編集しようとすると内容が保持されない
以上、確認お願いします。
comment:18 Changed 13 years ago by
Keywords: | 確認中 added; 差し戻し removed |
---|---|
Owner: | changed from nagasawa to fukamachi |
大量にバグが残っていて申し訳ないです
r11366で修正しました。
comment:20 Changed 13 years ago by
Keywords: | 確認中 added; 差し戻し removed |
---|---|
Status: | new → assigned |
r11369で2.12.xにも修正内容を反映しました
comment:21 follow-up: 22 Changed 13 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
動作確認いたしました。
2.12x系の問題点
- 携帯で日記の新規作成・編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。
- 携帯でメッセージを作成する際、Fatal errorになる。
Fatal error: Smarty error: [in file:/hogdhogd/webapp/modules/ktai/templates/h_message_send.tpl line 22]: syntax error: unrecognized tag: form_val.subject (Smarty_Compiler.class.php, line 446) in /hogehoge/lib/include/Smarty/Smarty.class.php on line 1095
- 携帯でメンバーページより不備のあるメッセージを投稿すると内容が保持されない。
2.13x系の問題点
- 携帯で既存のアルバム編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。
- 携帯で日記の新規作成・編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。
- 携帯でメンバーページより不備のあるメッセージを投稿すると内容が保持されない。
comment:22 Changed 13 years ago by
comment:23 Changed 13 years ago by
Keywords: | 確認中 added; 差し戻し removed |
---|
comment:24 Changed 13 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
動作確認いたしました
2.12x系の問題点
- 携帯でフレンドのメンバーページより不備のあるメッセージを投稿すると内容が保持されない。
2.13x系の問題点
- 携帯でフレンドのメンバーページより不備のあるメッセージを投稿すると内容が保持されない。
以上、確認をお願いします。
comment:25 Changed 13 years ago by
Keywords: | 確認中 added; 差し戻し removed |
---|
comment:26 Changed 13 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
動作確認いたしました
2.12x系の問題点
- 携帯でh_message_sendより不備のあるメッセージを投稿すると宛先が保持されない。
- 携帯でフレンドのメンバーページより不備のあるメッセージを投稿すると内容が保持されない。
2.13x系の問題点
- 携帯でh_message_sendより不備のあるメッセージを投稿すると宛先が保持されない。
以上、ご確認お願いいたします。
comment:28 follow-up: 29 Changed 13 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
- 他の箇所の記述に合わせる
webapp/modules/ktai/page/h_message_send.php(2.13) 32 if ($requests['msg']) { // 内容の不備によるリダイレクト時
- 他とあわせて「"」を使ってください
webapp/modules/ktai/page/h_message_send.php(2.12) 26 $this->set("form_val", $form_val);
webapp/modules/ktai/page/h_message_send.php(2.13) 36 $this->set("target_c_member", db_member_c_member4c_member_id_LIGHT($tar 42 $this->set("target_c_member", db_member_c_member4c_member_id_LIGHT($c_message['c_member_id_to'])
- 重複した処理を共通化して簡潔に記述してください
webapp/modules/ktai/page/h_message_send.php(2.13) 32 if ($requests['msg']) { // 内容の不備によるリダイレクト時 33 $form_val['subject'] = $subject; 34 $form_val['body'] = $body; 35 if ($target_c_member_id) { 36 $this->set("target_c_member", db_member_c_member4c_member_id_LIGHT($target_c_member_id)); 37 } 38 } else { 39 $form_val['subject'] = $c_message['subject']; 40 $form_val['body'] = $c_message['body']; 41 if (isset($c_message['c_member_id_to'])) { 42 $this->set("target_c_member", db_member_c_member4c_member_id_LIGHT($c_message['c_member_id_to']) ); 43 } 44 }
comment:29 Changed 13 years ago by
Keywords: | 確認中 added; 差し戻し removed |
---|
comment:30 Changed 13 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
- 重複している以下の記述を共通化する
webapp/modules/ktai/page/h_album_edit.php 33 $this->set('target_c_album', $c_album);
- webapp/modules/ktai/page/h_diary_edit.php も同様
- webapp/modules/ktai/page/h_message_send.php も同様
- 「'」を使う
webapp/modules/ktai/page/h_album_edit.php 37 $c_album['public_flag'] = $public_flag ? $public_flag : "public";
- デフォルト値を指定した方がいいです
webapp/modules/ktai/validate/page/h_diary_edit.ini 11 [public_flag] 12 type = "string"
- 重複部を共通化できそうです
webapp/modules/pc/page/f_message_send.php $tmplist = db_message_c_message4c_message_id($form_val['target_c_message_id']); $form_val['target_c_message_id'] = $tmplist['c_message_id'];
- ※内容の不備が無い時に以下の処理が行われなくなっています
96 if ($public_flag) { 97 $c_diary['public_flag'] = util_cast_public_flag_diary($public_flag); 98 }
comment:31 Changed 13 years ago by
追加です。
安定版に入れるには根が深く、すこし様子をみたいので、
- 開発版 - 2.13.8対応
- 安定版 - 2.12.11対応(次回)
にしましょう。2.12の変更を取り消してください。
comment:32 Changed 13 years ago by
Owner: | changed from fukamachi to urabe |
---|---|
Status: | assigned → new |
comment:34 Changed 13 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
- 「$c_album」を初期化しておく必要があります
webapp/modules/ktai/page/h_album_edit.php 33 } else { 34 $c_album['subject'] = $subject; 35 $c_album['description'] = $description; 36 $c_album['public_flag'] = $public_flag ? $public_flag : 'public'; 37 }
- webapp/modules/ktai/page/h_diary_edit.php も同様です
- webapp/modules/ktai/page/h_message_send.php も同様です
- webapp/modules/ktai/page/h_diary_edit.php も同様です
- webapp/modules/pc/page/f_message_send.php も同様です
- webapp/modules/pc/page/h_diary_add.php も同様です
- 他の箇所にも同様の不具合がないかの確認が必要です
- 以下の変更は「target_c_message_id」のリクエスト値がない場合に問題があります
webapp/modules/pc/page/f_message_send.php 28 $c_message = db_message_c_message4c_message_id($form_val['target_c_message_id']); 29 if ($form_val['target_c_message_id']) {
- 記述に改善の余地があります
webapp/modules/pc/page/f_message_send.php 28 $c_message = db_message_c_message4c_message_id($form_val['target_c_message_id']); 29 if ($form_val['target_c_message_id']) { 30 if ($c_message['c_member_id_from'] != $u) { 31 if ($c_message['c_member_id_to'] != $u || !$c_message['is_send']) { 32 handle_kengen_error(); 33 } 34 } 35 }
comment:37 Changed 13 years ago by
comment:41 Changed 13 years ago by
Keywords: | OpenPNE2.13.8 removed |
---|---|
Milestone: | OpenPNE2.12.10 → OpenPNE2.13.8 |
Type: | defect → enhancement |
2.12を軽く動作確認したところ、変更の解消に問題無かったようです。2.12.10のリリースから外して、開発版で先行対応させる不具合にします。
comment:45 Changed 13 years ago by
Keywords: | 差し戻し added; テスト待ち removed |
---|
動作テストいたしました。
2.12系
- 携帯でpage_h_message_sendより不備のあるメッセージを投稿すると内容が保持されない。
- 携帯でpage_f_message_sendより不備のあるメッセージを投稿すると内容が保持されない。
2.13系
- 携帯でh_message_sendより不備のあるメッセージを投稿すると宛先が保持されない。
以上の確認お願いします。
comment:48 follow-up: 49 Changed 13 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
target_c_message_idにc_member_idを指定しているので
存在しないメッセージのために入力に不備がある状態で送信しようとするとhandle_kengen_errorになります。
comment:49 Changed 13 years ago by
Replying to nagasawa:
r11514でメッセージIDを指定すべき場所で、メンバーIDを入力していたため権限エラーになる不具合を修正しました。
comment:50 Changed 13 years ago by
Keywords: | 確認中 added; 差し戻し removed |
---|
comment:52 Changed 13 years ago by
Keywords: | 確認中 added; 差し戻し removed |
---|
r11554 でコミットしました。
- データベースに情報が存在する場合も、空の情報で上書きされていた現象が発生していたので、修正
comment:53 Changed 13 years ago by
動作確認しました。
- 携帯でh_message_sendより不備のあるメッセージを投稿すると宛先が保持されない。
がまだ修正されていないようです。差し戻します。
comment:54 Changed 13 years ago by
r11555 で再度コミットしました。
- target_c_member_id がバリデートに追加されていなかったので修正し、
- フォーム配列に送信先の設定を追加
- スマーティで情報が読み込まれるように変更
comment:56 Changed 13 years ago by
Keywords: | 確認中 removed |
---|---|
Resolution: | → fixed |
Status: | new → closed |
動作確認いたしました。
問題無いようなので本チケットを閉じます。お疲れ様でした!
comment:57 Changed 13 years ago by
Description: | modified (diff) |
---|---|
Type: | enhancement → defect |