관리자와 일반회원 모두 회원을 수정할 때 공통부분을 사용합니다. 그래서 관리자, 일반회원 수정을 따로 나누는 게 속 편하지만 반복되는 부분이기에 하나의 메서드에서 구분하는 걸로 하였습니다.
// 회원정보 수정
public function edit($marr)
{
$sql = "UPDATE member SET name=:name, email=:email, zip_code=:zipcode, addr1=:addr1, addr2=:addr2, photo=:photo ";
$params = [
":name" => $marr["name"],
":email" => $marr["email"],
":zipcode" => $marr["zipcode"],
":addr1" => $marr["addr1"],
":addr2" => $marr["addr2"],
":photo" => $marr["photo"]
];
if ($marr["password"] != "") {
// 단방향 암호화
$password_hash = password_hash($marr["password"], PASSWORD_DEFAULT);
$params[":password"] = $password_hash;
$sql .= ", password=:password";
}
// 관리자 수정
if ($marr["level"] == 10 && isset($marr["idx"]) && $marr["idx"] != "") {
$params[":level"] = $marr["level"];
$params[":idx"] = $marr["idx"];
$sql .= ", level=:level";
$sql .= " WHERE idx=:idx";
} else {
// 일반회원 수정
$params[":id"] = $marr["id"];
$sql .= " WHERE id=:id";
}
$stmt = $this->conn->prepare($sql);
$stmt->execute($params);
}
define('DOCUMENT_ROOT', $_SERVER['DOCUMENT_ROOT'] . '/member');
define('ADMIN_DIR', DOCUMENT_ROOT . '/admin');
define('DATA_DIR', DOCUMENT_ROOT . '/data');
define('PROFILE_DIR', DATA_DIR . '/profile');
보통 공통부분으로 빠지는 파일은 새로 만들어서 관리를 합니다. 필자는 DB 부분이 여러 곳에서 사용되기 때문에 DB 안에 정의해 주었습니다. 굳이 저와 똑같이 해줄 필요는 없습니다.
$_SERVER['DOCUMENT_ROOT'] : Server 환경 변수를 사용하여 현재 디렉터리의 최상위 경로를 넣어줍니다.

위에 이미지는 필자의 해당 디렉터리 최상위 경로입니다.
최상위 경로를 가지고 관리자 폴더, 이미지 폴더를 더 쉽게 접근하게 만들어줬습니다.
// 프로필 이미지 업로드
public function profile_upload($id, $new_photo, $old_photo = "")
{
if ($old_photo != "") {
unlink(PROFILE_DIR . "/" . $old_photo); // 삭제
}
$photo = "";
$arr = explode(".", $_FILES["photo"]["name"]);
$ext = end($arr); // 확장자 추출
$photo = $id . "." . $ext; // 새로운 파일명
copy($new_photo["tmp_name"], PROFILE_DIR . "/" . $photo);
return $photo;
}
}
다음 시간에는 드디어 게시판을 만들어볼 겁니다!
너무 기대됩니다!!
글 봐주셔서 감사합니다.