Ticket #3784 (closed defect: fixed)

Opened 8 years ago

Last modified 8 years ago

フォームの内容に不備がありリダイレクトされた場合、フォームに編集内容が保持されない場所がある

Reported by: kiwa Assigned to: urabe
Priority: minor Milestone: OpenPNE2.13.8
Component: 指定しない Version: 2.12.x & 2.14.x
Keywords: Cc:

Description (Last modified by kudo)

■現象

  1. 作成・編集などのフォーム画面を表示
  2. フォームに不備がある状態でsubmitボタンを押下
  3. エラーで1の画面に返される

携帯版で上のような流れを行った場合、手順3で返された画面に手順2で入力した内容が保持されていない画面がある。

■発見箇所

携帯版

  • 日記作成・編集
  • メッセージ作成
  • アルバム作成・編集

PC版

  • 日記編集
  • 下書きメッセージ編集
  • アルバム編集

■原因

投稿処理アクション(do)でエラーが出た際、openpne_redirectを使用しているため、クエリ情報が受け渡されていないため。openpne_redirectの代わりにopenpne_forwardを使えばいいかもしれない。

またそれに伴い、それぞれのpageも修正が必要。

■修正内容

携帯版とPC版で、発生原因が異なる。

携帯版は、openpne_redirect()の部分をopenpne_forward()に置き換え、コントローラ部では表示内容を直前のフォーム内容に置き換えた。

PC版は、ifの条件文に問題があったため、if文自体を削除した。

■関連情報

Change History

04/08/09 19:26:55 changed by kiwa

  • 他のフォームでも同じ現象が出ていないか確認してください
  • 意図的な動作ではないか過去のチケットなども軽く確認してください

04/08/09 19:32:17 changed by fukamachi

  • description changed.

04/14/09 10:38:43 changed by kiwa

  • keywords set to OpenPNE2.13.8.
  • milestone set to OpenPNE2.12.10.

04/16/09 14:13:38 changed by fukamachi

  • owner changed from nobody to fukamachi.
  • status changed from new to assigned.

04/16/09 15:02:33 changed by fukamachi

  • description changed.
  • summary changed from 携帯版でフォームの内容に不備がありリダイレクトされた場合、フォームに編集内容が保持されない場所がある to フォームの内容に不備がありリダイレクトされた場合、フォームに編集内容が保持されない場所がある.

PC版の日記編集でも見つけたため、summaryを変更。 他にもリダイレクト時の値の保持について調べてみます

04/16/09 16:35:50 changed by fukamachi

  • description changed.

修正方法がわかったのでDescriptionを追記。

ただし、仕様の疑問点として、ktai/templates/h_diary_edit.tplの上の部分

メールで投稿
写真を添付すると写真付き日記になります。
※メール投稿では絵文字が反映されません

の表示フラグが、

14    ({if !$target_c_diary.c_diary_id && !$target_c_diary.body})

になっており、"本文なし"のエラーでは表示されるが、"タイトルなし"のエラーの場合は表示されないという一貫性のない挙動をする点が気になります。これはこれで理由があるのでしょうか?

(follow-up: ↓ 8 ) 04/16/09 17:24:27 changed by fukamachi

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);
         }

すると、リダイレクト後に入力が文字化けしました。おそらく二重でエンコードされているせいだと思います。何かいい方法があればいいんですが・・

(in reply to: ↑ 7 ) 04/16/09 17:49:00 changed by fukamachi

値を受け渡すだけなら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));
         }

04/16/09 19:46:30 changed by fukamachi

r11327で、携帯の日記の作成・編集の不備を修正しました。

04/16/09 19:50:31 changed by fukamachi

コミットするファイルを間違えました。

r11328

http://trac.openpne.jp/browser/OpenPNE/branches/work/fukamachi/form_redirect

04/16/09 21:01:42 changed by fukamachi

  • keywords changed from OpenPNE2.13.8 to OpenPNE2.13.8 確認中.
  • description changed.

r11331で修正しました。

04/17/09 10:48:17 changed by kiwa

  • keywords changed from OpenPNE2.13.8 確認中 to OpenPNE2.13.8 差し戻し.
  • owner changed from fukamachi to kiwa.
  • status changed from assigned to new.

2.12.xにマージします

04/17/09 11:19:18 changed by kiwa

  • owner changed from kiwa to nobody.

一旦手放します

04/17/09 11:26:15 changed by nagasawa

  • owner changed from nobody to nagasawa.

やります

04/17/09 13:46:35 changed by nagasawa

r11346 でマージしました。

04/17/09 14:59:55 changed by kiwa

  • keywords changed from OpenPNE2.13.8 差し戻し to OpenPNE2.13.8 確認中.

04/17/09 20:03:18 changed by imamura623

  • keywords changed from OpenPNE2.13.8 確認中 to OpenPNE2.13.8 差し戻し.

動作確認いたしました。

2.12x系の問題点

  • 携帯で不備のある日記を新規投稿すると、内容が保持されない
  • 携帯で日記の編集をすると、内容が保持されない
  • 携帯で不備のあるメッセージを新規作成すると内容が保持されない
  • 携帯でメンバーページより不備のあるメッセージを投稿すると内容が保持されない
  • pcでアルバム編集しようとすると内容が保持されない
  • pcでアルバム編集しようとすると内容が保持されない
  • pcで日記編集しようとすると内容が保持されない
  • pcでメッセージ下書きを編集しようとすると内容が保持されない

2.13x系の問題点

  • アルバムの編集をすると内容が保持されない。
  • 携帯で日記の編集をすると、内容が保持されない
  • 携帯でメッセージの下書き編集をすると内容が保持されない
  • 携帯でメンバーページより不備のあるメッセージを投稿すると内容が保持されない
  • pcでアルバム編集しようとすると内容が保持されない
  • pcで日記編集しようとすると内容が保持されない
  • pcでメッセージ下書きを編集しようとすると内容が保持されない

以上、確認お願いします。

04/20/09 14:53:50 changed by fukamachi

  • keywords changed from OpenPNE2.13.8 差し戻し to OpenPNE2.13.8 確認中.
  • owner changed from nagasawa to fukamachi.

大量にバグが残っていて申し訳ないです
r11366で修正しました。

04/20/09 16:27:03 changed by kiwa

  • keywords changed from OpenPNE2.13.8 確認中 to OpenPNE2.13.8 差し戻し.

2.12の修正もお願いします。

04/20/09 17:15:36 changed by fukamachi

  • keywords changed from OpenPNE2.13.8 差し戻し to OpenPNE2.13.8 確認中.
  • status changed from new to assigned.

r11369で2.12.xにも修正内容を反映しました

(follow-up: ↓ 22 ) 04/21/09 11:57:52 changed by Shintani@

  • keywords changed from OpenPNE2.13.8 確認中 to OpenPNE2.13.8 差し戻し.

動作確認いたしました。

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系の問題点

  • 携帯で既存のアルバム編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。
  • 携帯で日記の新規作成・編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。
  • 携帯でメンバーページより不備のあるメッセージを投稿すると内容が保持されない。

(in reply to: ↑ 21 ) 04/21/09 14:11:49 changed by Shintani@

Replying to Shintani@:

2.12x系の問題点

  • 携帯で日記の新規作成・編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。

2.13x系の問題点

  • 携帯で既存のアルバム編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。
  • 携帯で日記の新規作成・編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。

#3837 上記のバグに関してはこっちで対応します。

04/21/09 16:13:59 changed by fukamachi

  • keywords changed from OpenPNE2.13.8 差し戻し to OpenPNE2.13.8 確認中.

以下のリビジョンで修正しました。

2.12.x
r11377

2.13.x
r11375, r11376

04/21/09 16:36:15 changed by Shintani@

  • keywords changed from OpenPNE2.13.8 確認中 to OpenPNE2.13.8 差し戻し.

動作確認いたしました

2.12x系の問題点

  • 携帯でフレンドのメンバーページより不備のあるメッセージを投稿すると内容が保持されない。

2.13x系の問題点

  • 携帯でフレンドのメンバーページより不備のあるメッセージを投稿すると内容が保持されない。

以上、確認をお願いします。

04/21/09 17:35:41 changed by fukamachi

  • keywords changed from OpenPNE2.13.8 差し戻し to OpenPNE2.13.8 確認中.

r11381(2.13.x), r11382(2.12.x)で修正しました。

doアクションのopenpne_redirectをopenpne_forwardに修正し忘れていたのが原因でした。申し訳ないです。

04/21/09 19:43:07 changed by imamura623

  • keywords changed from OpenPNE2.13.8 確認中 to OpenPNE2.13.8 差し戻し.

動作確認いたしました

2.12x系の問題点

  • 携帯でh_message_sendより不備のあるメッセージを投稿すると宛先が保持されない。
  • 携帯でフレンドのメンバーページより不備のあるメッセージを投稿すると内容が保持されない。

2.13x系の問題点

  • 携帯でh_message_sendより不備のあるメッセージを投稿すると宛先が保持されない。

以上、ご確認お願いいたします。

04/21/09 20:12:36 changed by fukamachi

  • keywords changed from OpenPNE2.13.8 差し戻し to OpenPNE2.13.8 確認中.

r11388, r11389で修正しました。

(follow-up: ↓ 29 ) 04/21/09 22:02:23 changed by shingo

  • keywords changed from OpenPNE2.13.8 確認中 to OpenPNE2.13.8 差し戻し.
  • 他の箇所の記述に合わせる
    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             }
    

(in reply to: ↑ 28 ) 04/21/09 23:13:47 changed by fukamachi

  • keywords changed from OpenPNE2.13.8 差し戻し to OpenPNE2.13.8 確認中.

Replying to shingo:

r11396(2.13.x)、r11397で修正しました。

04/22/09 11:18:54 changed by shingo

  • keywords changed from OpenPNE2.13.8 確認中 to OpenPNE2.13.8 差し戻し.
  • 重複している以下の記述を共通化する
    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	        } 
    

04/22/09 11:22:11 changed by kiwa

追加です。

安定版に入れるには根が深く、すこし様子をみたいので、

  • 開発版 - 2.13.8対応
  • 安定版 - 2.12.11対応(次回)

にしましょう。2.12の変更を取り消してください。

04/22/09 11:31:30 changed by urabe

  • owner changed from fukamachi to urabe.
  • status changed from assigned to new.

04/22/09 15:53:35 changed by urabe

  • keywords changed from OpenPNE2.13.8 差し戻し to OpenPNE2.13.8 確認中.

r11406 でコミットしました。

04/22/09 16:27:50 changed by shingo

  • keywords changed from OpenPNE2.13.8 確認中 to OpenPNE2.13.8 差し戻し.
  • 「$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         }
    

04/22/09 17:21:33 changed by kawahara

2.12.x への変更取り消し作業やります。

(follow-ups: ↓ 37 ↓ 40 ) 04/22/09 19:08:11 changed by kawahara

r11408

  • 2.12.xについて変更を取り消しました。

(in reply to: ↑ 36 ) 04/22/09 19:13:40 changed by kawahara

Replying to kawahara:

r11408 * 2.12.xについて変更を取り消しました。

上のコミットについてコミットログのチケット番号が間違っています。

× #3794#3784

ご迷惑おかけします。

04/22/09 19:42:41 changed by urabe

r11410 で一旦戻し、修正をやりなおします。

04/22/09 19:48:02 changed by urabe

何度もすみません。戻っていないので r11411 で再度コミットしました。

(in reply to: ↑ 36 ) 04/22/09 19:52:37 changed by shingo

comment:36 2.12.xにの変更を取り消しを確認しました。

04/22/09 19:54:41 changed by kiwa

  • keywords changed from OpenPNE2.13.8 差し戻し to 差し戻し.
  • type changed from defect to enhancement.
  • milestone changed from OpenPNE2.12.10 to OpenPNE2.13.8.

2.12を軽く動作確認したところ、変更の解消に問題無かったようです。2.12.10のリリースから外して、開発版で先行対応させる不具合にします。

04/22/09 20:23:23 changed by urabe

  • keywords changed from 差し戻し to 確認中.

r11414 で再度コミットしました。何度もすみません。

04/22/09 20:48:56 changed by urabe

問題がありましたので、 r11418 で再度コミットしました。

04/22/09 20:49:57 changed by shingo

  • keywords changed from 確認中 to テスト待ち.

確認しました。

04/24/09 16:47:55 changed by Shintani@

  • keywords changed from テスト待ち to 差し戻し.

動作テストいたしました。

2.12系

  • 携帯でpage_h_message_sendより不備のあるメッセージを投稿すると内容が保持されない。
  • 携帯でpage_f_message_sendより不備のあるメッセージを投稿すると内容が保持されない。

2.13系

  • 携帯でh_message_sendより不備のあるメッセージを投稿すると宛先が保持されない。

以上の確認お願いします。

04/24/09 17:15:52 changed by kiwa

2.12系は今回対応していないので、2.13の不具合のみ確認と修正をお願いします。

04/24/09 18:47:48 changed by urabe

  • keywords changed from 差し戻し to 確認中.

r11446 でコミットしました。

(follow-up: ↓ 49 ) 04/28/09 11:37:17 changed by nagasawa

  • keywords changed from 確認中 to 差し戻し.

target_c_message_idにc_member_idを指定しているので
存在しないメッセージのために入力に不備がある状態で送信しようとするとhandle_kengen_errorになります。

(in reply to: ↑ 48 ) 04/28/09 14:43:37 changed by fukamachi

Replying to nagasawa:

r11514でメッセージIDを指定すべき場所で、メンバーIDを入力していたため権限エラーになる不具合を修正しました。

04/28/09 14:44:03 changed by fukamachi

  • keywords changed from 差し戻し to 確認中.

04/28/09 15:39:09 changed by nagasawa

  • keywords changed from 確認中 to 差し戻し.

宛先が保持されていません。

04/30/09 20:51:34 changed by urabe

  • keywords changed from 差し戻し to 確認中.

r11554 でコミットしました。

  • データベースに情報が存在する場合も、空の情報で上書きされていた現象が発生していたので、修正

05/01/09 13:03:38 changed by imamura623

動作確認しました。

* 携帯でh_message_sendより不備のあるメッセージを投稿すると宛先が保持されない。

がまだ修正されていないようです。差し戻します。

05/01/09 15:00:54 changed by urabe

r11555 で再度コミットしました。

  • target_c_member_id がバリデートに追加されていなかったので修正し、
  • フォーム配列に送信先の設定を追加
  • スマーティで情報が読み込まれるように変更

05/01/09 16:03:38 changed by urabe

r11558 で50人以上メンバーが存在する場合、不備の際にメンバーが表示されない現象を修正しました

05/01/09 16:16:56 changed by imamura623

  • keywords deleted.
  • status changed from new to closed.
  • resolution set to fixed.

動作確認いたしました。
問題無いようなので本チケットを閉じます。お疲れ様でした!

05/25/09 11:02:09 changed by kudo

  • type changed from enhancement to defect.
  • description changed.