Index: branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Input.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Input.php	(revision 20041)
+++ branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Input.php	(revision 20260)
@@ -47,7 +47,4 @@
         $this->tpl_mainpage = 'system/input.tpl';
 
-        // ページ送り用ナンバーの取得
-        $this->tpl_pageno = isset($_REQUEST['pageno']) ? $_REQUEST['pageno'] : 1;
-
         // マスタ-データから権限配列を取得
         $masterData = new SC_DB_MasterData_Ex();
@@ -78,4 +75,7 @@
         // トランザクショントークンの取得
         $this->transactionid = SC_Helper_Session_Ex::getToken();
+
+        // ページ送りの処理 $_REQUEST['pageno']が信頼しうる値かどうかチェックする。
+        $this->tpl_pageno = $this->lfCheckPageNo($_REQUEST['pageno']);
 
         switch($this->getMode()) {
@@ -88,8 +88,4 @@
             break;
 
-        case 'parent_reload':
-            $this->execParentReloadMode();
-            // defaultアクションも実行させるためbreakしない
-
         default:
             $this->execDefaultMode();
@@ -120,14 +116,16 @@
         }
 
-        $this->initNewMode();
+        $this->objForm = $this->initNewMode();
 
         $arrErr = $this->validateNewMode();
+
+        $this->arrForm = $this->objForm->getHashArray();
 
         if (count($arrErr) > 0) {
             // 入力された値を保持する
             $this->tpl_mode      = $this->getMode();
-            $this->tpl_member_id = $_POST['member_id'];
-            $this->tpl_old_login_id = $_POST['old_login_id'];
-            $this->arrForm = $this->objForm->getHashArray();
+            $this->tpl_member_id = '';
+            $this->tpl_old_login_id = '';
+
             // パスワードは保持しない
             $this->arrForm['password'] = '';
@@ -139,7 +137,7 @@
         }
 
-        $this->insertMemberData($this->objForm->getHashArray());
+        $this->insertMemberData($this->arrForm);
         // 親ウィンドウを更新後、自ウィンドウを閉じる。
-        $url = ADMIN_SYSTEM_URLPATH . "?pageno=" . $_POST['pageno'];
+        $url = ADMIN_SYSTEM_URLPATH . "?pageno=" . $this->arrForm['pageno'];
         $this->tpl_onload = "fnUpdateParent('".$url."'); window.close();";
     }
@@ -149,13 +147,15 @@
      * SC_FormParamのインスタンスをメンバ変数にセットする.
      *
-     * @param void
-     * @return void
+     * @param string $mode editの時は指定
+     * @return object SC_FormParamのインスタンス
      */
     function initNewMode($mode = "") {
         $objForm = new SC_FormParam();
 
+        $objForm->addParam('メンバーID', 'member_id', INT_LEN, 'n', array('NUM_CHECK'));
         $objForm->addParam('名前', 'name', STEXT_LEN, 'KV', array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
         $objForm->addParam('所属', 'department', STEXT_LEN, 'KV', array('MAX_LENGTH_CHECK'));
         $objForm->addParam('ログインID', 'login_id', '' , '', array('EXIST_CHECK', 'ALNUM_CHECK'));
+        $objForm->addParam('変更前ログインID', 'old_login_id', '' , '', array('ALNUM_CHECK'));
         if ($mode == "edit" && $_POST['password'] == DEFAULT_PASSWORD) {
             $objForm->addParam('パスワード', 'password', '' , '', array('EXIST_CHECK'));
@@ -165,9 +165,10 @@
         $objForm->addParam('権限', 'authority', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
         $objForm->addParam('稼働/非稼働', 'work', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
+        $objForm->addParam('ページ', 'pageno', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
 
         $objForm->setParam($_POST);
         $objForm->convParam();
 
-        $this->objForm = $objForm;
+        return $objForm;
     }
 
@@ -213,14 +214,16 @@
         }
 
-        $this->initNewMode("edit");
+        $this->objForm = $this->initNewMode("edit");
 
         $arrErr = $this->validateEditMode();
+
+        $this->arrForm = $this->objForm->getHashArray();
 
         if (count($arrErr) > 0) {
             // 入力された値を保持する
             $this->tpl_mode      = $this->getMode();
-            $this->tpl_member_id = $_POST['member_id'];
-            $this->tpl_old_login_id = $_POST['old_login_id'];
-            $this->arrForm = $this->objForm->getHashArray();
+            $this->tpl_member_id = $this->arrForm['member_id'];
+            $this->tpl_old_login_id = $this->arrForm['old_login_id'];
+
             // パスワードは保持しない
             $this->arrForm['password'] = '';
@@ -232,7 +235,7 @@
         }
 
-        $this->updateMemberData($_POST['member_id'], $this->objForm->getHashArray());
+        $this->updateMemberData($this->arrForm['member_id'], $this->arrForm);
         // 親ウィンドウを更新後、自ウィンドウを閉じる。
-        $url = ADMIN_SYSTEM_URLPATH . "?pageno=" . $_POST['pageno'];
+        $url = ADMIN_SYSTEM_URLPATH . "?pageno=" . $this->arrForm['pageno'];
         $this->tpl_onload = "fnUpdateParent('".$url."'); window.close();";
     }
@@ -267,16 +270,4 @@
 
     /**
-     * parent_reloadアクションを実行する.
-     * テンプレートに親windowをリロードするjavascriptをセットする.
-     *
-     * @param void
-     * @return void
-     */
-    function execParentReloadMode() {
-        $url = ADMIN_SYSTEM_URLPATH;
-        $this->tpl_onload = "fnUpdateParent('$url')";
-    }
-
-    /**
      * defaultアクションを実行する.
      * 初回表示時に実行される.
@@ -288,16 +279,33 @@
      */
     function execDefaultMode() {
-        // $_GET['id']があれば編集モードで表示する
-        if (isset($_GET['id']) && SC_Utils::sfIsInt($_GET['id'])) {
-            $this->tpl_mode      = 'edit';
-            $this->tpl_member_id = $_GET['id'];
+
+        // $_GET['id']（member_id）が登録済みのものかチェック。
+        // 登録されていない場合は不正なものとして、新規扱いとする。
+        $clean_id = "";
+        $clean_mode_flg = "new";
+        
+        // idが0より大きい数字で整数の場合
+        if (isset($_GET['id']) && SC_Utils::sfIsInt($_GET['id']) && $_GET['id'] > 0) {
+            if ($this->memberDataExists('member_id = ? AND del_flg = 0', $_GET['id'])) {
+                $clean_id = $_GET['id'];
+                $clean_mode_flg = "edit";
+            }
+        }
+
+        switch($clean_mode_flg) {
+        case 'edit':
+            $this->tpl_mode      = $clean_mode_flg;
+            $this->tpl_member_id = $clean_id;
             $this->tpl_onfocus   = "fnClearText(this.name);";
-            $this->arrForm       = $this->getMemberData($_GET['id']);
+            $this->arrForm       = $this->getMemberData($clean_id);
             $this->arrForm['password'] = DEFAULT_PASSWORD;
             $this->tpl_old_login_id    = $this->arrForm['login_id'];
-        // 新規作成モードで表示
-        } else {
-            $this->tpl_mode = "new";
+            break;
+
+        case 'new':
+        default:
+            $this->tpl_mode = $clean_mode_flg;
             $this->arrForm['authority'] = -1;
+            break;
         }
     }
@@ -314,5 +322,5 @@
         $where   = 'member_id = ?';
 
-        $objQuery = new SC_Query();
+        $objQuery =& SC_Query::getSingletonInstance();
         $arrRet = $objQuery->select($columns, $table, $where, array($id));
 
@@ -332,5 +340,5 @@
         $table = 'dtb_member';
 
-        $objQuery = new SC_Query();
+        $objQuery =& SC_Query::getSingletonInstance();
         $count = $objQuery->count($table, $where, array($val));
 
@@ -340,4 +348,28 @@
 
     /**
+     * ページ番号が信頼しうる値かチェックする.
+     *
+     * @access private
+     * @param  integer $pageno ページの番号
+     * @return integer $clean_pageno チェック後のページの番号
+     */
+    function lfCheckPageNo($pageno) {
+
+        $clean_pageno = "";
+
+        // $pagenoが0以上の整数かチェック
+        if(SC_Utils_Ex::sfIsInt($pageno) && $pageno > 0) {
+            $clean_pageno = $pageno;
+        }
+
+        // 例外は全て1とする
+        else {
+            $clean_pageno = 1;
+        }
+
+        return $clean_pageno;
+    }
+
+    /**
      * 入力された管理者データをInsertする.
      *
@@ -346,5 +378,5 @@
      */
     function insertMemberData($arrMemberData) {
-        $objQuery = new SC_Query();
+        $objQuery =& SC_Query::getSingletonInstance();
 
         // INSERTする値を作成する.
@@ -376,5 +408,5 @@
      */
     function updateMemberData($member_id, $arrMemberData) {
-        $objQuery = new SC_Query();
+        $objQuery =& SC_Query::getSingletonInstance();
 
         // Updateする値を作成する.
