시핑하다보니 괜찮은 프로그램들을 찾게되는데 DB 필드에 값 전달이 안되는 현상이
있더라구요. 상세한 분석을 부탁드리는건 아니구요. 있다 없다 정도의 답변만 얻어도 좋습니다.ㅎ
제가 어떻게 해볼 수 있는게 아니라..
Copy
function userLogin($username, $password) { $clnUsername = $this->escapeForDb($username); $loginSQL = "SELECT id, full_name, username, salt, password, usergroup, show_offline_buddies FROM mia_users WHERE username={$clnUsername}"; $user = $this->executeSQL($loginSQL); if (empty($user)) { return false; } else { $dbSalt = $user->fields[3]; $dbPassword = $user->fields[4]; } //Try to recreate password for matching $inputHashedPassword = sha1($password . $dbSalt); //Test db password against the one entered on the form if ($inputHashedPassword !== $dbPassword) { return false; } else { //We have a match, now update/rerandomize the salt and password for added security $newPasswordArray = $this->buildPassword($password); $newSalt = $this->escapeForDb($newPasswordArray['salt']); $newPasswordHash = $this->escapeForDb($newPasswordArray['password']); $now = $this->escapeForDb(date("Y-m-d H:i:s")); $updateSQL = "UPDATE mia_users SET password = {$newPasswordHash}, salt = {$newSalt}, heartbeat = {$now}, status = 'online', password_reset_key = '' WHERE username={$clnUsername}"; if ($this->executeSQL($updateSQL)===false) { return false; } } $userid = $user->fields[0]; $fullname = $user->fields[1]; $username = $user->fields[2]; $usergroup = $user->fields[5]; $showoffline = $user->fields[6]; $env = sha1($_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR']); $this->setupSession($userid, $fullname, $username, $usergroup, $env, $showoffline); } /** * Creates a new account * @param fullname * @param username * @param email * @param password */ function createUserAccount($fullname, $username, $email, $password, $timeoffset) { $clnFullname = $this->escapeForDb($fullname); $clnUsername = $this->escapeForDb($username); $clnEmail = $this->escapeForDb($email); $passwordArray = $this->buildPassword($password); $clnSalt = $this->escapeForDb($passwordArray['salt']); $clnPasswordHash = $this->escapeForDb($passwordArray['password']); $now = $this->escapeForDb(date("Y-m-d H:i:s")); $userSQL = "INSERT INTO mia_users (full_name, username, password, salt, email, usergroup, time_offset, create_date) VALUES ({$clnFullname}, {$clnUsername}, {$clnPasswordHash}, {$clnSalt}, {$clnEmail}, 1, {$timeoffset}, {$now})"; $result = $this->executeSQL($userSQL); if (!$result) { return false; } }
답변 1개 / 댓글 1개
채택된 답변
+20 포인트
10년 전
파일 내용 중 일부분인가 보네요.
그리고 저건 특정 사이트에서 사용하는 거군요.
테이블명(mia_users)이 이미 정해져 있는 걸 보면요.
저걸 사용하시려면 해당 파일에 지정되어 있는 테이블명을 전부 수정하셔야 하겠네요.
답변에 대한 댓글 1개
KIM163
10년 전
답변을 작성하려면 로그인이 필요합니다.
테이블도'mia_users' 로 생성되어 있습니다. 계정생성 부분 외에는
모두 정상적으로 출력이 되는걸 보면 설치와 설정부분에 미흡한 점이
있었는지 다시 검토해보겠습니다. 말씀 감사합니다~