111 lines
3.0 KiB
PHP
111 lines
3.0 KiB
PHP
<?php
|
|
// Member Class file
|
|
|
|
class Member
|
|
{
|
|
// 멤버 변수, 프로퍼티
|
|
private $conn;
|
|
|
|
// 생성자
|
|
public function __construct($db)
|
|
{
|
|
$this->conn = $db; // PDO 객체 주입
|
|
}
|
|
|
|
// 아이디 중복체크용 멤버 함수, 메소드
|
|
public function id_exists($id)
|
|
{
|
|
$sql = "SELECT * FROM member WHERE id=:id";
|
|
$stmt = $this->conn->prepare($sql);
|
|
$stmt->bindParam(':id', $id);
|
|
$stmt->execute();
|
|
|
|
return $stmt->rowCount() ? true : false;
|
|
}
|
|
|
|
// 이메일 형식 체크
|
|
public function email_format_check($email)
|
|
{
|
|
return filter_var($email, FILTER_VALIDATE_EMAIL);
|
|
}
|
|
|
|
public function email_exists($email)
|
|
{
|
|
$sql = "SELECT * FROM member WHERE email=:email";
|
|
$stmt = $this->conn->prepare($sql);
|
|
$stmt->bindParam(':email', $email);
|
|
$stmt->execute();
|
|
|
|
return $stmt->rowCount() ? true : false;
|
|
}
|
|
|
|
// 회원 정보 입력
|
|
public function input($marr)
|
|
{
|
|
$sql = "INSERT INTO member(id, password, name, email, zipcode, addr1, addr2, photo, create_at, ip) VALUES (:id, :password, :name, :email, :zipcode, :addr1, :addr2, :photo, NOW(), :ip)";
|
|
$stmt = $this->conn->prepare($sql);
|
|
$stmt->bindParam(':id', $marr['id']);
|
|
$stmt->bindParam(':password', $marr['password']);
|
|
$stmt->bindParam(':name', $marr['name']);
|
|
$stmt->bindParam(':email', $marr['email']);
|
|
$stmt->bindParam(':zipcode', $marr['zipcode']);
|
|
$stmt->bindParam(':addr1', $marr['addr1']);
|
|
$stmt->bindParam(':addr2', $marr['addr2']);
|
|
$stmt->bindParam(':photo', $marr['photo']);
|
|
$stmt->bindParam(':ip', $_SERVER['REMOTE_ADDR']);
|
|
|
|
$stmt->execute();
|
|
}
|
|
|
|
// 로그인
|
|
public function login($id, $pw)
|
|
{
|
|
// 아이디로 회원 정보 조회
|
|
$sql = "SELECT * FROM member WHERE id = :id LIMIT 1";
|
|
$stmt = $this->conn->prepare($sql);
|
|
$stmt->bindParam(':id', $id);
|
|
$stmt->execute();
|
|
|
|
$member = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
if (!$member) {
|
|
return false; // 아이디 없음
|
|
}
|
|
|
|
// 입력 비밀번호 vs DB 해시 비교
|
|
if (password_verify($pw, $member['password'])) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
public function logout()
|
|
{
|
|
if (session_status() === PHP_SESSION_NONE) {
|
|
session_start();
|
|
}
|
|
|
|
// 세션 변수 비우기
|
|
$_SESSION = [];
|
|
|
|
// 세션 쿠키 제거
|
|
if (ini_get('session.use_cookies')) {
|
|
$params = session_get_cookie_params();
|
|
setcookie(
|
|
session_name(),
|
|
'',
|
|
time() - 42000,
|
|
$params['path'],
|
|
$params['domain'],
|
|
$params['secure'],
|
|
$params['httponly']
|
|
);
|
|
}
|
|
|
|
session_destroy();
|
|
|
|
header('Location: ../index.php');
|
|
exit;
|
|
}
|
|
}
|