- Timestamp:
- 2007/07/20 15:58:59 (17 years ago)
- Location:
- branches/feature-module-update
- Files:
-
- 1 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update
-
Property
svn:ignore
set to
.cache
.settings
.projectOptions
-
Property
svn:ignore
set to
-
branches/feature-module-update/data/class/SC_Customer.php
r12157 r15078 6 6 */ 7 7 8 /* [ ̾¾Î] SC_Customer9 * [ ³µÍ×] ²ñ°÷´ÉÍý¥¯¥é¥¹8 /* [名称] SC_Customer 9 * [概要] 会員管理クラス 10 10 */ 11 11 class SC_Customer { … … 13 13 var $conn; 14 14 var $email; 15 var $customer_data; // ²ñ°÷¾ðÊó15 var $customer_data; // 会員情報 16 16 17 17 function SC_Customer( $conn = '', $email = '', $pass = '' ) { 18 // ¥»¥Ã¥·¥ç¥ó³«»Ï19 /* startSession ¤«¤é°ÜÆ° 2005/11/04 ÃæÀî*/18 // セッション開始 19 /* startSessionから移動 2005/11/04 中川 */ 20 20 sfDomainSessionStart(); 21 21 22 // DB Àܳ¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®22 // DB接続オブジェクト生成 23 23 $DB_class_name = "SC_DbConn"; 24 24 if ( is_object($conn)){ 25 25 if ( is_a($conn, $DB_class_name)){ 26 // $conn ¤¬$DB_class_name¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤¢¤ë26 // $connが$DB_class_nameのインスタンスである 27 27 $this->conn = $conn; 28 28 } 29 29 } else { 30 30 if (class_exists($DB_class_name)){ 31 //$DB_class_name ¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òºîÀ®¤¹¤ë31 //$DB_class_nameのインスタンスを作成する 32 32 $this->conn = new SC_DbConn(); 33 33 } … … 35 35 36 36 if ( is_object($this->conn) ) { 37 // Àµ¾ï¤ËDB¤ËÀܳ¤Ç¤¤ë37 // 正常にDBに接続できる 38 38 if ( $email ){ 39 // email ¤«¤é¸ÜµÒ¾ðÊó¤ò¼èÆÀ¤¹¤ë39 // emailから顧客情報を取得する 40 40 // $this->setCustomerDataFromEmail( $email ); 41 41 } 42 42 } else { 43 echo "DB Àܳ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®¤Ë¼ºÇÔ¤·¤Æ¤¤¤Þ¤¹";43 echo "DB接続オブジェクトの生成に失敗しています"; 44 44 exit; 45 45 } … … 56 56 $arrValues[] = $email; 57 57 } 58 // ËÜÅÐÏ¿¤µ¤ì¤¿²ñ°÷¤Î¤ß58 // 本登録された会員のみ 59 59 $sql = "SELECT * FROM dtb_customer WHERE (email ILIKE ?" . $sql_mobile . ") AND del_flg = 0 AND status = 2"; 60 60 $result = $this->conn->getAll($sql, $arrValues); 61 61 $data = $result[0]; 62 62 63 // ¥Ñ¥¹¥ï¡¼¥É¤¬¹ç¤Ã¤Æ¤¤¤ì¤Ð¸ÜµÒ¾ðÊó¤òcustomer_data¤Ë¥»¥Ã¥È¤·¤Ætrue¤òÊÖ¤¹63 // パスワードが合っていれば顧客情報をcustomer_dataにセットしてtrueを返す 64 64 if ( sha1($pass . ":" . AUTH_MAGIC) == $data['password'] ){ 65 65 $this->customer_data = $data; … … 71 71 72 72 /** 73 * ·ÈÂÓüËöID¤¬°ìÃפ¹¤ë²ñ°÷¤¬Â¸ºß¤¹¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£74 * 75 * @return boolean ³ºÅö¤¹¤ë²ñ°÷¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ï true¡¢¤½¤ì°Ê³°¤Î¾ì¹ç76 * ¤Ï false ¤òÊÖ¤¹¡£73 * 携帯端末IDが一致する会員が存在するかどうかをチェックする。 74 * 75 * @return boolean 該当する会員が存在する場合は true、それ以外の場合 76 * は false を返す。 77 77 */ 78 78 function checkMobilePhoneId() { … … 81 81 } 82 82 83 // ·ÈÂÓüËöID¤¬°ìÃפ·¡¢ËÜÅÐÏ¿¤µ¤ì¤¿²ñ°÷¤ò¸¡º÷¤¹¤ë¡£83 // 携帯端末IDが一致し、本登録された会員を検索する。 84 84 $sql = 'SELECT count(*) FROM dtb_customer WHERE mobile_phone_id = ? AND del_flg = 0 AND status = 2'; 85 85 $result = $this->conn->getOne($sql, array($_SESSION['mobile']['phone_id'])); … … 88 88 89 89 /** 90 * ·ÈÂÓüËöID¤ò»ÈÍѤ·¤Æ²ñ°÷¤ò¸¡º÷¤·¡¢¥Ñ¥¹¥ï¡¼¥É¤Î¾È¹ç¤ò¹Ô¤¦¡£91 * ¥Ñ¥¹¥ï¡¼¥É¤¬¹ç¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï¸ÜµÒ¾ðÊó¤ò¼èÆÀ¤¹¤ë¡£92 * 93 * @param string $pass ¥Ñ¥¹¥ï¡¼¥É94 * @return boolean ³ºÅö¤¹¤ë²ñ°÷¤¬Â¸ºß¤·¡¢¥Ñ¥¹¥ï¡¼¥É¤¬¹ç¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï true¡¢95 * ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£90 * 携帯端末IDを使用して会員を検索し、パスワードの照合を行う。 91 * パスワードが合っている場合は顧客情報を取得する。 92 * 93 * @param string $pass パスワード 94 * @return boolean 該当する会員が存在し、パスワードが合っている場合は true、 95 * それ以外の場合は false を返す。 96 96 */ 97 97 function getCustomerDataFromMobilePhoneIdPass($pass) { … … 100 100 } 101 101 102 // ·ÈÂÓüËöID¤¬°ìÃפ·¡¢ËÜÅÐÏ¿¤µ¤ì¤¿²ñ°÷¤ò¸¡º÷¤¹¤ë¡£102 // 携帯端末IDが一致し、本登録された会員を検索する。 103 103 $sql = 'SELECT * FROM dtb_customer WHERE mobile_phone_id = ? AND del_flg = 0 AND status = 2'; 104 104 @list($data) = $this->conn->getAll($sql, array($_SESSION['mobile']['phone_id'])); 105 105 106 // ¥Ñ¥¹¥ï¡¼¥É¤¬¹ç¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¸ÜµÒ¾ðÊó¤òcustomer_data¤Ë³ÊǼ¤·¤Ætrue¤òÊÖ¤¹¡£106 // パスワードが合っている場合は、顧客情報をcustomer_dataに格納してtrueを返す。 107 107 if (sha1($pass . ':' . AUTH_MAGIC) == @$data['password']) { 108 108 $this->customer_data = $data; … … 114 114 115 115 /** 116 * ·ÈÂÓüËöID¤òÅÐÏ¿¤¹¤ë¡£116 * 携帯端末IDを登録する。 117 117 * 118 118 * @return void … … 136 136 137 137 /** 138 * email ¤«¤é email_mobile ¤Ø·ÈÂӤΥ᡼¥ë¥¢¥É¥ì¥¹¤ò¥³¥Ô¡¼¤¹¤ë¡£138 * email から email_mobile へ携帯のメールアドレスをコピーする。 139 139 * 140 140 * @return void 141 141 */ 142 142 function updateEmailMobile() { 143 // ¤¹¤Ç¤Ë email_mobile ¤ËÃͤ¬Æþ¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï²¿¤â¤·¤Ê¤¤¡£143 // すでに email_mobile に値が入っている場合は何もしない。 144 144 if ($this->customer_data['email_mobile'] != '') { 145 145 return; 146 146 } 147 147 148 // email ¤¬·ÈÂӤΥ᡼¥ë¥¢¥É¥ì¥¹¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï²¿¤â¤·¤Ê¤¤¡£148 // email が携帯のメールアドレスではない場合は何もしない。 149 149 if (!gfIsMobileMailAddress($this->customer_data['email'])) { 150 150 return; 151 151 } 152 152 153 // email ¤«¤é email_mobile ¤Ø¥³¥Ô¡¼¤¹¤ë¡£153 // email から email_mobile へコピーする。 154 154 $objQuery = new SC_Query; 155 155 $sqlval = array('email_mobile' => $this->customer_data['email']); … … 160 160 } 161 161 162 // ¥Ñ¥¹¥ï¡¼¥É¤ò³Îǧ¤»¤º¤Ë¥í¥°¥¤¥ó162 // パスワードを確認せずにログイン 163 163 function setLogin($email) { 164 // ËÜÅÐÏ¿¤µ¤ì¤¿²ñ°÷¤Î¤ß164 // 本登録された会員のみ 165 165 $sql = "SELECT * FROM dtb_customer WHERE email ILIKE ? AND del_flg = 0 AND status = 2"; 166 166 $result = $this->conn->getAll($sql, array($email)); … … 170 170 } 171 171 172 // ¥»¥Ã¥·¥ç¥ó¾ðÊó¤òºÇ¿·¤Î¾ðÊó¤Ë¹¹¿·¤¹¤ë172 // セッション情報を最新の情報に更新する 173 173 function updateSession() { 174 174 $sql = "SELECT * FROM dtb_customer WHERE customer_id = ? AND del_flg = 0"; … … 179 179 } 180 180 181 // ¥í¥°¥¤¥ó¾ðÊó¤ò¥»¥Ã¥·¥ç¥ó¤ËÅÐÏ¿¤·¡¢¥í¥°¤Ë½ñ¤¹þ¤à181 // ログイン情報をセッションに登録し、ログに書き込む 182 182 function startSession() { 183 183 sfDomainSessionStart(); 184 184 $_SESSION['customer'] = $this->customer_data; 185 // ¥»¥Ã¥·¥ç¥ó¾ðÊó¤ÎÊݸ185 // セッション情報の保存 186 186 gfPrintLog("access : user=".$this->customer_data['customer_id'] ."\t"."ip=". $_SERVER['REMOTE_HOST'], CUSTOMER_LOG_PATH ); 187 187 } 188 188 189 // ¥í¥°¥¢¥¦¥È¡¡$_SESSION['customer']¤ò²òÊü¤·¡¢¥í¥°¤Ë½ñ¤¹þ¤à189 // ログアウト $_SESSION['customer']を解放し、ログに書き込む 190 190 function EndSession() { 191 // $_SESSION['customer'] ¤Î²òÊü191 // $_SESSION['customer']の解放 192 192 unset($_SESSION['customer']); 193 // ¥í¥°¤ËµÏ¿¤¹¤ë193 // ログに記録する 194 194 gfPrintLog("logout : user=".$this->customer_data['customer_id'] ."\t"."ip=". $_SERVER['REMOTE_HOST'], CUSTOMER_LOG_PATH ); 195 195 } 196 196 197 // ¥í¥°¥¤¥ó¤ËÀ®¸ù¤·¤Æ¤¤¤ë¤«È½Äꤹ¤ë¡£197 // ログインに成功しているか判定する。 198 198 function isLoginSuccess($dont_check_email_mobile = false) { 199 // ¥í¥°¥¤¥ó»þ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤ÈDB¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤¬°ìÃפ·¤Æ¤¤¤ë¾ì¹ç199 // ログイン時のメールアドレスとDBのメールアドレスが一致している場合 200 200 if(sfIsInt($_SESSION['customer']['customer_id'])) { 201 201 $objQuery = new SC_Query(); 202 202 $email = $objQuery->get("dtb_customer", "email", "customer_id = ?", array($_SESSION['customer']['customer_id'])); 203 203 if($email == $_SESSION['customer']['email']) { 204 // ¥â¥Ð¥¤¥ë¥µ¥¤¥È¤Î¾ì¹ç¤Ï·ÈÂӤΥ᡼¥ë¥¢¥É¥ì¥¹¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤³¤È¤â¥Á¥§¥Ã¥¯¤¹¤ë¡£205 // ¤¿¤À¤· $dont_check_email_mobile ¤¬ true ¤Î¾ì¹ç¤Ï¥Á¥§¥Ã¥¯¤·¤Ê¤¤¡£204 // モバイルサイトの場合は携帯のメールアドレスが登録されていることもチェックする。 205 // ただし $dont_check_email_mobile が true の場合はチェックしない。 206 206 if (defined('MOBILE_SITE') && !$dont_check_email_mobile) { 207 207 $email_mobile = $objQuery->get("dtb_customer", "email_mobile", "customer_id = ?", array($_SESSION['customer']['customer_id'])); … … 214 214 } 215 215 216 // ¥Ñ¥é¥á¡¼¥¿¤Î¼èÆÀ216 // パラメータの取得 217 217 function getValue($keyname) { 218 218 return $_SESSION['customer'][$keyname]; 219 219 } 220 220 221 // ¥Ñ¥é¥á¡¼¥¿¤Î¥»¥Ã¥È221 // パラメータのセット 222 222 function setValue($keyname, $val) { 223 223 $_SESSION['customer'][$keyname] = $val; 224 224 } 225 225 226 // ¥Ñ¥é¥á¡¼¥¿¤¬NULL¤«¤É¤¦¤«¤ÎȽÄê226 // パラメータがNULLかどうかの判定 227 227 function hasValue($keyname) { 228 228 return isset($_SESSION['customer'][$keyname]); 229 229 } 230 230 231 // ÃÂÀ¸Æü·î¤Ç¤¢¤ë¤«¤É¤¦¤«¤ÎȽÄê231 // 誕生日月であるかどうかの判定 232 232 function isBirthMonth() { 233 233 $arrRet = split("[- :/]", $_SESSION['customer']['birth']);
Note: See TracChangeset
for help on using the changeset viewer.