<?php //**************** // DB 정보 입력 // define('상수명', '값', true); //**************** define('_DBHOST','localhost'); define('_DBUSER','address_root'); // DB 사용자 define('_DBPASS', 'autoset'); // DB 패스워드 define('_DBNAME','address'); // DB 명 define('_DBTYPE','mysql'); // 데이터베이스 종류 define('_DSN',_DBTYPE.':host='._DBHOST.';dbname='._DBNAME.';charset=utf8'); ?>
|
<?php class LoginClass extends DBController { // 회원 정보 신규 입력 public function storeUser($userID, $userNM, $password, $mobileNO) { $hash = $this -> hashSSHA($password); $encrypted_password = $hash['encrypted']; // encrypted password $salt = $hash['salt']; // salt $regdate = date("YmdHis");
$key = "userID, userNM, passwd, salt, regdate"; $val = "$userID,$userNM,$encrypted_password,$salt,$regdate"; $result = $this -> getDbInsert('members', $key, $val); // DBController에서 별도 생성 함수 // check for successful store if ($result) { $user = $this -> getUser($userID, $password); $rs = $this -> storeUserDetail($user['idx'], $userNM, $userID, $mobileNO); if ($rs == 1) { return $user; } else { return -1; } } else { return -1; // 0 } }
// 회원 세부 정보 입력 public function storeUserDetail($relatedidx, $userNM, $email, $mobileNO) { $regdate = date("YmdHis"); $key = 'relatedidx,name,email,mobileNO,modifydate'; // 칼럼 정확한지 체크 $val = "$relatedidx,$userNM,$email,$mobileNO,$regdate"; $this -> getDbInsert('member_data', $key, $val); }
// 회원정보 반환 public function getUser($userID, $password) { $sql = "SELECT * FROM members WHERE userID=:userID"; $stmt = $this -> db -> prepare($sql); $stmt -> bindValue(':userID', $userID); $stmt -> execute();
if ($user = $stmt -> fetch()) { // verifying user password $salt = $user['salt']; $encrypted_password = $user['passwd']; $hash = $this -> checkhashSSHA($salt, $password); if ($encrypted_password == $hash) { // user authentication details are correct return $user; } } else { return NULL; } }
// 회원 가입 여부 체크 public function isUserExisted($userID) { $stmt = $this -> db -> prepare("SELECT count(userID) from members WHERE userID=:userID"); $stmt -> bindValue(':userID', $userID, PDO::PARAM_STR); $stmt -> execute(); if ($row = $stmt -> fetch()) { return $row[0]; // 미가입이면 0 반환, 가입이면 1 반환 } else { return -1; } }
// 회원정보 수정 public function updateUser($idx, $userNM, $mobileNO) { if(isset($idx) && !empty($idx)){ $this->getDbUpdate('members', "userNM=?", array($userNM), "idx=".$idx); $set = "name=?,mobileNO=?"; $params = array($userNM,$mobileNO); $this->getDbUpdate('member_data', $set, $params, 'relatedidx='.$idx); return 1; } else { return 0; } }
// 회원 정보 삭제 : Move public function deleteUser($userID) { if ($this -> isUserExisted($userID) > 0) { try { $this -> db -> beginTransaction(); $stmt = $this -> db -> prepare("delete FROM members WHERE userID=:userID"); $stmt -> bindValue(':userID', $userID, PDO::PARAM_STR); $stmt -> execute(); // 삭제할 데이터의 존재 유무에 상관없이 실행한다. $this -> db -> commit(); } catch (PDOException $pex) { $this -> db -> rollBack(); echo "에러 : " . $pex -> getMessage(); } return 1; // 삭제 성공 } else { return 0; // 삭제할 데이터가 없음 } }
// 안드로이드/아이폰 로그인 체크 public function LoginUserChk($userID, $password, $deviceID) { if (empty($userID) || empty($password)) { return 0; } else { $user = $this -> getUser($userID, $password); if ($user['idx'] > 0) { // 장치 일련번호 체크 if ($user['phoneSE'] == NULL) { // 신규 장비번호 입력(최초 로그인) $this -> LoginUserEquipInput($userID, $deviceID); return $user['idx']; } else { if ($user['phoneSE'] === $deviceID) { return 1; // 일련번호 일치 } else { return -1; //일련번호 불일치 } } } else { return 0; //계정오류 } }
}
// 장치번호 업데이트 public function LoginUserEquipInput($userID, $deviceID) { if (strlen($deviceID) > 0 && is_numeric($deviceID)) {// 안드로이드폰 $ostype = 2; } else if (strlen($deviceID) > 30) {// 아이폰 $ostype = 1; } else {// 기타 $ostype = 0; }
try { $this -> db -> beginTransaction(); $sql = 'update members set phoneSE=:phoneSE, OStype=:OStype where userID=:userID'; $stmt = $this -> db -> prepare($sql); $stmt -> bindValue(':phoneSE', $deviceID, PDO::PARAM_STR); $stmt -> bindValue(':OStype', $ostype, PDO::PARAM_INT); $stmt -> bindValue(':userID', $userID, PDO::PARAM_STR); $status = $stmt -> execute(); if ($status == true) { $this -> db -> commit(); return 1; } else { return 0; } } catch (PDOException $pex) { $this -> db -> rollBack(); echo "에러 : " . $pex -> getMessage(); } }//end
} ?> |