# 회원관리 - 회원수정 Backend

이태현·2025년 8월 18일

Web 개발

목록 보기
24/53
post-thumbnail

회원수정

  • 관리자와 일반회원 모두 회원을 수정할 때 공통부분을 사용합니다. 그래서 관리자, 일반회원 수정을 따로 나누는 게 속 편하지만 반복되는 부분이기에 하나의 메서드에서 구분하는 걸로 하였습니다.

    • 관리자는 idx 값을 가지고 수정을 하기 때문에 idx 값으로 데이터를 가져오게 했습니다.
    • 일반회원은 id 값을 가지고 수정하기 때문에 id 값으로 데이터를 가져오게 했습니다.
  // 회원정보 수정
  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

  • 경로 설정을 할 때 보통 ../../../ 이런 방식으로 해당 이미지를 가져오거나 파일을 include 해옵니다. 그런데 이렇게 할 경우 휴먼에러를 발생시킬 확률이 높습니다. 따라서 절대 경로를 정의해 주기만 한다면 어디서든 해당 값을 가지고 쉽게 경로를 설정할 수 있습니다.
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;
  }
}

마무리

다음 시간에는 드디어 게시판을 만들어볼 겁니다!

너무 기대됩니다!!

글 봐주셔서 감사합니다.

profile
이해하고 분석하고 지배한다

0개의 댓글