테스트 사이트 - 개발 중인 베타 버전입니다

일반적인 프롬프트 예시 (웹, IDE기반 모두 활용가능 )

· 5개월 전 · 285 · 2

# "[귀사 웹사이트 프로젝트명]" AI 코딩 어시스턴트 프롬프트

**최종 업데이트:** [YYYY년 MM월 DD일]

**목표:** 이 프롬프트는 "[귀사 웹사이트 프로젝트명]" PHP 프로젝트의 개발 및 유지보수를 위해 GitHub Copilot, Cursor AI와 같은 AI 코딩 어시스턴트에게 제공되는 통합 가이드입니다. AI는 이 문서를 기반으로 프로젝트의 기존 코딩 스타일, 아키텍처, 주요 기능 및 데이터베이스 구조를 이해하고, 일관성 있고 논리적인 방식으로 코드 생성, 수정, 분석 및 문제 해결 작업을 수행해야 합니다.

## [I. 프로젝트 개요 (Project Overview)]

* **프로젝트명:** [귀사 웹사이트 프로젝트명] (예: "ABC 솔루션 포털")
* **주요 서비스:**
    * [주요 서비스 1 내용 입력] (예: "회원제 유료 콘텐츠 제공 플랫폼")
    * [주요 서비스 2 내용 입력] (예: "라이센스 기반의 [귀사 솔루션명] 판매 및 관리")
    * 사용자 커뮤니티 ([게시판/포럼 기능명] 기능).
    * 고객 지원 (1:1 문의 또는 [고객 지원 채널명]).
* **운영 주소:** `https://example.com` (HTTPS 프로토콜 사용 권장)
* **라이센스 기반 솔루션 제공 형태 (해당하는 경우):**
    * `*****.example.com` (와일드카드 서브도메인) 형태로 [솔루션 유형] 솔루션 제공.
    * 메인 웹사이트와 동일 서버 내에 있거나, 별도의 환경으로 구축되어 운영.
    * 메인 웹사이트(`example.com`)에서 발급/관리되는 라이센스 키를 통해 인증 후 해당 솔루션 사용 가능.

## [II. 개발 환경 및 기술 스택 (Development Environment & Tech Stack)]

* **서버 환경:** [서버 환경 정보] (예: Linux, Apache 또는 Nginx 웹 서버)
* **프로그래밍 언어:** [주요 프로그래밍 언어 및 버전] (예: PHP 7.4 이상, 절차적/객체지향 혼용 가능)
* **데이터베이스:** [데이터베이스 종류 및 버전] (예: MariaDB 10.x 또는 MySQL 8.x). (`[데이터베이스_덤프파일명].sql` 덤프 파일 참조 필수).
* **DB 연결 방식:** `[경로]/config.php` 내 `getDbConnection()` 함수 (또는 유사 함수)를 통한 PDO 연결 ([문자셋 정보] 사용).
* **프론트엔드:** HTML, CSS, JavaScript, [CSS 프레임워크 및 버전] (예: Bootstrap 5, Tailwind CSS), [JavaScript 라이브러리] (예: jQuery, React, Vue.js).
* **CSS/JS 관리:** [CSS/JS 파일 관리 방식 설명] (예: 루트 경로의 `/css/` 및 `/js/` 폴더에서 통합 관리 또는 `assets` 폴더 사용).
    * `css/style.css` (또는 `main.css`): 사이트 전체 공통 스타일.
    * `css/admin-style.css` (또는 `admin.css`): 관리자 페이지 전용 스타일.
    * `css/[모듈명].css`: 특정 모듈(예: 게시판) 스타일.
    * `js/script.js` (또는 `main.js`): 사이트 전체 공통 스크립트.
    * `js/admin.js`: 관리자 페이지 공통 스크립트.
    * `js/[모듈명].js`: 특정 모듈(예: 알림) 관련 스크립트.
    * `js/[차트_라이브러리_관련_스크립트].js`: Chart.js (또는 다른 차트 라이브러리) 기반 차트 스크립트.
* **WYSIWYG 에디터:** [사용하는 에디터 명칭] (예: Summernote, CKEditor). (`[경로]/[에디터_설정파일].php`에서 설정, `[경로]/upload.php`를 통해 이미지 업로드 처리).
* **차트 라이브러리:** [사용하는 차트 라이브러리 명칭] (예: Chart.js, D3.js).
* **의존성 관리:** [의존성 관리 도구 사용 여부] (예: Composer 사용 또는 라이브러리 직접 포함).

## [III. 핵심 아키텍처 및 운영 원칙 (Core Architecture & Operational Principles)]

1.  **인증 시스템 (매우 중요):**
    * 모든 사용자 인증(일반, 관리자) 및 회원가입 시 사용되는 [추가 인증 방식]은 `[경로]/auth/` (또는 유사 경로) 폴더 내 [인증 라이브러리/모듈 명칭] 기반 커스텀 모듈을 통해 처리됨.
    * `Auth.php` (또는 `Authentication.php`)가 핵심 인증 클래스이며, `User.php`, `Role.php`, `Session.php`, `Token.php` 등과 상호작용함.
    * **`[경로]/auth/config.php` (또는 `[경로]/config/auth.php`):** DB 접속 정보, 세션/쿠키 설정(예: `SESSION_NAME`, `COOKIE_LIFETIME`), 해싱 비용(`HASH_COST`) 등 보안 관련 상수 정의. [중요:] `Auth.php`에서 호출됨. 중복호출금지.
    * **`[경로]/auth/functions.php` (또는 `[경로]/helpers/common.php`):** CSRF 토큰 생성/검증 (`generateCsrfToken`/`validateCsrfToken`), 입력값 필터링 (`sanitizeInput`), 플래시 메시지 (`setFlashMessage`/`getFlashMessages`) 등 **프로젝트 전반에 사용되는 공통 유틸리티 함수 포함. (함수 불일치 문제 발생 시 최우선 확인 대상)**
2.  **라이센스 기반 솔루션 연동 (해당하는 경우):**
    * 메인 웹사이트(`example.com`)에서 발급된 라이센스 키(`license_keys` 테이블 또는 유사 테이블)를 통해 `*****.example.com` 서브도메인 솔루션의 접근 권한을 제어.
    * 이 인증 로직은 `[경로]/models/License.php` 및 `[경로]/controllers/LicenseController.php` (또는 유사 파일)와 밀접하게 연관됨.
3.  **모듈화된 구조:**
    * 관리자(`[경로]/admin/`), 인증(`[경로]/auth/`), 게시판(`[경로]/bbs/` 또는 `[경로]/forum/`), 컨트롤러(`[경로]/controllers/`), 모델(`[경로]/models/`) 등 기능별 디렉토리 구조.
    * 공통 UI 요소는 `[경로]/includes/` (사용자단) 및 `[경로]/admin/includes/` (관리자단)에 분리.
4.  **페이지별 정보 관리:**
    * **사용자 페이지:** `[경로]/includes/header.php`에서 `$page_title`, `$page_description`, `$page_keywords` 전역 변수 (또는 유사 변수명)를 사용하여 각 페이지의 SEO 관련 메타 정보를 동적으로 관리.
    * **관리자 페이지:** `[경로]/admin/includes/admin-header.php`에서 `$pageTitle` (camelCase 또는 프로젝트 규칙) 전역 변수를 사용하여 페이지 제목을 관리. (사용자 페이지와 변수명 규칙에 차이가 있을 수 있음에 유의)
5.  **데이터베이스 중심:**
    * [데이터베이스 종류]를 사용하여 모든 주요 데이터(사용자, 게시글, 라이센스, 설정 등)를 관리. (세부 스키마는 `[데이터베이스_덤프파일명].sql` 참조)
6.  **경로 관리:**
    * 파일 인클루드(`require_once`, `include_once`) 시 경로 관리를 일관되게 유지.
    * 핵심 공유 파일(예: `/[경로]/auth/`, `/[경로]/models/`, 루트의 `/[경로]/includes/` 등)은 `$base_path = $_SERVER['DOCUMENT_ROOT'];` (또는 `define('BASE_PATH', __DIR__ . '/..');` 등)와 같이 사전에 정의된 절대 경로 기반 변수를 사용.
    * 동일 모듈 내의 파일 인클루드(예: `/admin/` 내에서 `includes/admin-header.php` 호출) 시에는 상대 경로 사용 가능.
    * `../` 방식의 상대 경로 사용이나 `__DIR__` 상수 사용은, `$base_path`와 같은 일관된 경로 전략이 수립된 경우 혼용을 지양하여 경로 참조의 명확성을 높임.

## [IV. 주요 디렉토리 및 파일 구조 (Key Directory & File Structure)]

* **`/` (루트 디렉토리):**
    * `index.php`: 메인 랜딩 페이지.
    * `login.php`, `register.php`, `logout.php`, `profile.php`: 사용자 인증 및 프로필 관련 페이지.
    * `about.php`, `faq.php`, `terms.php`, `privacy.php`: 회사 소개, FAQ, 약관 페이지.
    * `[서비스명1].php`, `[서비스명2].php`: 서비스 소개 페이지.
    * `robots.txt`, `sitemap.php` (동적 생성 권장), `sitemap.xml` (정적 또는 동적 생성본): SEO 관련 파일.
    * `[회사_로고_파일명].png`: 웹사이트 로고 이미지.
    * `[데이터베이스_덤프파일명].sql`: 데이터베이스 스키마 및 초기 데이터.
    * `admin-setup.php` (또는 `setup.php`): (존재 예상 또는 권장) 시스템 초기 설정 스크립트 (DB 테이블 생성 등).
* **`/admin/`** (또는 `/[관리자_경로명]/`): 관리자 시스템 페이지 및 로직.
    * `index.php`: 관리자 대시보드.
    * `users.php`: 회원 관리.
    * `plans.php` (또는 `products.php`): 서비스/상품 플랜 관리.
    * `boards.php` (또는 `categories.php`): (게시판) 카테고리 관리.
    * `manage-boards.php` (또는 `forum-management.php`): 게시판(보드 자체) 관리.
    * `license-keys.php` (해당하는 경우): 라이센스 키 목록.
    * `license.php` (해당하는 경우): 라이센스 통합 관리.
    * `inquiries.php`: 1:1 문의 목록.
    * `inquiry-view.php`: 1:1 문의 상세 및 답변.
    * `questions.php` (회원가입 시 질문 기능이 있는 경우): 질문 관리.
    * `widgets.php` (위젯 기능이 있는 경우): 위젯 관리.
    * `settings.php`: 시스템 설정.
    * (기타 관리 기능 페이지: `statistics.php`, `notifications.php` 등 존재 가능)
    * **`/admin/classes/`** (또는 `/[관리자_경로명]/lib/`): 관리자 기능 관련 PHP 클래스.
        * `Inquiry.php` (또는 `SupportTicket.php`): 문의 관리 클래스.
        * `UserSubscription.php` (또는 `Membership.php`): 사용자 구독/멤버십 관리 클래스.
        * (기타 관리 기능 클래스 존재 가능)
    * **`/admin/includes/`** (또는 `/[관리자_경로명]/partials/`): 관리자 페이지 공통 UI 및 유틸리티.
        * `admin-header.php`: 관리자 페이지 공통 헤더.
        * `admin-footer.php`: 관리자 페이지 공통 푸터.
        * `admin-sidebar.php`: 관리자 페이지 사이드바 메뉴.
        * `admin-utils.php`: 관리자 페이지 전용 유틸리티 함수.
    * **`/admin/js/`**: 관리자 페이지 전용 JavaScript 파일.
        * `admin.js`: 관리자 페이지 공통 스크립트.
    * **`/admin/css/`**: 관리자 페이지 전용 CSS 파일.
        * `admin-style.css`: 관리자 페이지 스타일.
    * **`/admin/api/`**: (존재 예상 또는 권장) 관리자 기능 관련 API 엔드포인트.
        * `get_user_data.php` (예시)
* **`/auth/` (핵심 인증 모듈 - 또는 `/[인증_모듈_경로명]/`):**
    * `Auth.php` (또는 `Authentication.php`): 핵심 인증 로직 클래스.
    * `config.php`: DB 연결 정보, 세션/쿠키 상수 등 주요 설정. **`getDbConnection()` 함수 (또는 유사 함수) 포함.**
    * `functions.php` (또는 `helpers.php`): **CSRF 방어, 입력값 새니타이즈, 플래시 메시지 등 공통 유틸리티 함수 (매우 중요).**
    * `User.php`: 사용자 정보 관리 클래스.
    * `Role.php`: 사용자 역할 관리 클래스.
    * `Session.php`: 세션 관리 클래스 (DB 기반 세션 저장 로직 포함 가능).
    * `Token.php`: 다양한 유형의 토큰 생성 및 검증 클래스.
    * `CustomQuestion.php` (회원가입 시 질문 기능이 있는 경우): 자동 가입 방지 질문 관리 클래스.
    * `error.log` (또는 `php_errors.log`): PHP 오류 로그 파일 (경로는 서버 설정에 따라 다를 수 있음).
* **`/bbs/`** (또는 `/[커뮤니티_모듈_경로명]/`): 사용자 커뮤니티 게시판 시스템.
    * `index.php`: 게시글 목록.
    * `view.php`: 게시글 상세 보기.
    * `write.php`, `edit.php`: 게시글 작성 및 수정.
    * `delete.php`: 게시글 삭제.
    * `comment.php`: 댓글 처리.
    * `upload.php`: 에디터 내 이미지 업로드 처리 (`/uploads/[모듈명]/YYYYMM/` 경로에 저장 권장).
    * `notification.php` (알림 기능이 있는 경우): 사용자 알림 페이지.
    * `search.php`: 게시글 검색 결과 페이지.
    * **`/bbs/includes/`**: 게시판 관련 유틸리티 및 UI 컴포넌트.
        * `functions.php`: 게시판 핵심 함수.
        * `pagination.php`: 페이징 HTML 생성 함수.
        * `[에디터명]_config.php`: 에디터 초기화 및 설정.
        * `widgets.php`: 게시판 위젯 관련 함수.
    * **`/bbs/css/`**: 게시판 전용 CSS (루트 `/css/` 폴더로 통합 관리될 수 있음).
        * `bbs.css` (또는 `forum.css`).
* **`/controllers/`**: 주요 기능 로직 처리 컨트롤러 (MVC 패턴 적용 시).
    * `LicenseController.php` (해당하는 경우).
    * `[기능명]Controller.php`.
* **`/css/`**: 전역 및 모듈별 CSS 파일.
    * `style.css` (또는 `main.css`).
    * `admin-style.css` (실제로는 `/admin/css/admin-style.css` 가능성 있음).
    * `[모듈명].css`.
    * `[프레임워크명].min.css` (예: `bootstrap.min.css`).
* **`/js/`**: 전역 및 모듈별 JavaScript 파일.
    * `script.js` (또는 `main.js`).
    * `admin.js` (실제로는 `/admin/js/admin.js` 가능성 있음).
    * `notifications.js` (알림 기능이 있는 경우).
    * `[차트_라이브러리_관련_스크립트].js`.
    * `[프레임워크명].bundle.min.js` (예: `bootstrap.bundle.min.js`).
* **`/includes/`** (또는 `/[공통_UI_경로명]/`): 사용자 페이지 공통 UI 요소.
    * `header.php`: 공통 헤더. **`$page_title`, `$page_description`, `$page_keywords` 변수 (또는 유사 변수명) 사용.**
    * `footer.php`: 공통 푸터.
    * `sidebar.php`: (존재 시) 사용자 페이지 사이드바.
    * `[위젯_관련_파일].php`: 위젯 표시용 인클루드 파일.
* **`/models/`**: 데이터베이스와 상호작용하는 모델 클래스 (MVC 패턴 또는 유사 구조 적용 시).
    * `License.php` (해당하는 경우).
    * `[데이터_모델명].php`.
* **`/uploads/`**: 파일 업로드 저장 경로 (예: `/uploads/[모듈명]/YYYYMM/`).
* **`/api/`**: (존재 예상 또는 권장) AJAX 요청 등을 처리하는 API 엔드포인트.
* **기타 루트 파일:** `about.php`, `faq.php`, `terms.php`, `privacy.php`, 서비스 소개 페이지 등.

**(위 파일 및 디렉토리 구조는 예시이며, 귀사의 프로젝트 구조에 맞게 수정하십시오.)**

## [V. 데이터베이스 스키마 (`[데이터베이스_덤프파일명].sql` 기반 요약)]

* **`users`**: 사용자 정보 (`role_id` FK -> `roles.id` 등).
* **`roles`**: 사용자 역할.
* **`sessions`** (DB 기반 세션 사용 시): 세션 저장.
* **`tokens`** (인증 토큰 사용 시): 사용자 인증 관련 토큰.
* **`remember_tokens`** (자동 로그인 기능 시): 자동 로그인 토큰.
* **`custom_questions`** (회원가입 시 질문 기능이 있는 경우): 자동가입 방지 질문.
* **`login_attempts`**: 로그인 시도 횟수 기록.
* **`[게시판명]_boards`** (또는 `forums`): 게시판 정보.
* **`[게시판명]_categories`**: 게시판 카테고리 (`board_id` FK 등).
* **`[게시판명]_posts`**: 게시글 (`user_id`, `board_id`, `category_id` 등).
* **`[게시판명]_comments`**: 댓글 (`post_id`, `user_id` 등).
* **`[게시판명]_notifications`** (알림 기능이 있는 경우): 사용자 알림.
* **`widgets`** (위젯 기능이 있는 경우): 위젯 정보.
* **`products`** (상품/서비스 판매 시): 제품 정보.
* **`product_categories`** (상품/서비스 판매 시): 제품 카테고리.
* **`license_keys`** (라이센스 기능 시): 라이센스 키 (`product_id`, `user_id` 등).
* **`license_logs`** (라이센스 기능 시): 라이센스 키 사용/변경 이력.
* **`service_plans`** (구독 서비스 시): 제공 서비스 플랜 정보.
* **`plan_prices`** (구독 서비스 시): 서비스 플랜별 가격.
* **`user_services`** (또는 `subscriptions`): 사용자가 구매/구독한 서비스 내역.
* **`payments`**: 결제 정보.
* **`inquiries`** (또는 `support_tickets`): 1:1 문의.
* **`settings`**: 시스템 전역 설정.

**(상세 컬럼, 타입, 제약 조건, 인덱스 등은 제공된 `[데이터베이스_덤프파일명].sql` 파일을 직접 참조하거나, 귀사의 데이터베이스 스키마를 기준으로 작성하십시오.)**

## [VI. 주요 기능 명세 (Key Feature Specifications)]

1.  **사용자 인증 (`[경로]/auth/` 또는 유사 경로):**
    * 이메일/비밀번호 기반 로그인, 회원가입 ([커스텀 질문 인증] 포함 가능), 로그아웃.
    * 자동 로그인 (Remember Me), 비밀번호 재설정.
    * 역할 기반 접근 제어 (예: Admin, Editor, Member).
    * 로그인 시도 제한 및 IP/이메일 기반 차단.
    * CSRF 방어, 입력값 검증.
2.  **라이센스 관리 (해당하는 경우 - `[경로]/admin/`, `[경로]/models/License.php` 등):**
    * 라이센스 키 생성, 조회, 수정, 삭제, 사용자 할당/해제.
    * 라이센스 기간 및 만료 처리.
    * 라이센스 사용 로그.
3.  **게시판 ([모듈명]) (`[경로]/bbs/` 또는 유사 경로):**
    * 다중 게시판 지원, 카테고리별 게시글 목록, 검색, 상세 보기.
    * [에디터명] 에디터 게시글 작성/수정 (이미지 업로드 포함).
    * 댓글/대댓글, 사용자 알림, 페이징, 캐싱.
4.  **관리자 기능 (`[경로]/admin/` 또는 유사 경로):**
    * 대시보드, 회원 관리, 서비스/플랜/가격 관리, 주문/결제 관리(예상), 1:1 문의 관리, 게시판/카테고리 관리, 위젯 관리, 시스템 설정.
    * 사용자 구독 관리 (해당하는 경우).
5.  **사용자 프로필 (`[경로]/profile.php` 또는 유사 경로):**
    * 개인 정보 수정, 비밀번호 변경, 활동 내역 조회.
6.  **콘텐츠 페이지 및 SEO:**
    * 서비스 소개, 회사 소개, FAQ, 약관 등 정적 페이지.
    * `robots.txt`, 동적/정적 `sitemap`, 구조화 데이터 (Schema.org).

## [VII. 코딩 가이드라인 및 AI 작업 시 주의사항 (Coding Guidelines & AI Task Instructions)]

**AI는 다음 지침을 반드시 준수하여 "[귀사 웹사이트 프로젝트명]" 프로젝트의 코드 작업을 수행해야 합니다. 이 지침은 프로젝트의 일관성, 안정성, 유지보수성을 확보하기 위해 매우 중요합니다.**

1.  **기존 코딩 스타일 절대 준수:**
    * 새로운 코드 작성 또는 기존 코드 수정 시, **주변 코드의 스타일(들여쓰기 - [스페이스 N칸 또는 탭 명시], 변수명 규칙 - [프로젝트 규칙 명시, 예: camelCase 또는 snake_case], 주석 스타일 등)을 철저히 따를 것.**
    * PHP 태그 스타일(`<?php ... ?>`), 제어 구조 스타일(if, for, while 등), 함수 및 클래스 정의 스타일 등을 **기존 코드와 일관되게 유지**할 것.
    * 일반적인 PHP 코딩 컨벤션이나 AI의 기본 스타일보다 **프로젝트 내 기존 스타일이 최우선 순위**임. 불필요하게 코드 포맷을 변경하지 말 것.
2.  **프로젝트 실제 구조 기반 작업:**
    * 제시된 파일 구조(IV 섹션)와 데이터베이스 스키마(`[데이터베이스_덤프파일명].sql`, V 섹션)를 **정확히 이해하고 작업**할 것.
    * 임의로 새로운 파일/폴더 구조를 만들거나 기존 구조를 변경하지 말 것 (명시적 요청 시 예외).
    * 존재하지 않는 함수나 클래스를 가정하여 사용하지 말고, **프로젝트 내에 실제로 정의된 요소만 활용**할 것.
    * **관리자 페이지 레이아웃:** 모든 관리자 페이지 (`/[관리자_경로명]/*.php`)는 표준 관리자 레이아웃을 사용해야 하며, 이를 위해 각 관리자 페이지 상단에는 `require_once 'includes/admin-header.php';`를, 하단에는 `require_once 'includes/admin-footer.php';`를 포함해야 함. (경로는 프로젝트 구조에 맞게 조정)
3.  **논리적이고 일관된 접근:**
    * 모든 코드 변경은 논리적인 근거를 가져야 하며, 기존 시스템의 작동 방식과 충돌하지 않도록 주의.
    * 함수나 변수의 명명 규칙, 데이터 처리 흐름, `require_once` 경로 등을 일관성 있게 유지.
    * **경로 관리:** 파일 인클루드 시 `$base_path` (또는 `BASE_PATH` 상수)와 같은 절대 경로 기반 변수를 사용하고, 동일 모듈 내에서는 상대 경로를 사용하는 등 일관된 경로 관리 전략을 따를 것 (III.6 참조).
4.  **"가정 금지" 원칙 (매우 중요):**
    * 특정 페이지나 기능, 변수(특히 `$_SESSION`, `$_POST`, `$_GET`), 세션 값, 사용자 로그인 상태, 권한 등이 이미 설정되어 있거나 정상적으로 작동한다고 **절대 가정하지 말 것.**
    * 필요한 데이터나 상태는 항상 **명시적으로 확인하고 로드하는 코드를 포함**할 것. (예: `isset()`, `empty()`, `array_key_exists()`, DB 조회, `Auth::isLoggedIn()`, `Auth::isAdmin()` 등 활용)
5.  **통합 인증 경로 및 연관 페이지 우선 참조/분석/검증 (매우 중요):**
    * 코드 수정 또는 기능 추가 요청 시, 해당 작업이 영향을 미칠 수 있는 **모든 연관 파일(특히 `require_once`로 연결된 파일)을 먼저 분석**할 것.
    * 특히 **인증 관련 로직(`[경로]/auth/` 폴더 전체 또는 유사 경로)은 모든 기능의 선행 조건**이므로, 변경 시 사용자 인증 상태, 역할 권한 등을 반드시 확인.
    * **함수 호출 관계 파악:** 특정 함수를 수정하거나 사용할 때, 해당 함수가 **어디서 호출되고 어떤 파라미터를 받으며 어떤 값을 반환하는지**, 그리고 이 함수를 호출하는 다른 부분에 미치는 영향을 반드시 고려.
    * **데이터베이스 상호작용 분석:** DB 스키마(`[데이터베이스_덤프파일명].sql`)를 참조하여 테이블 간의 관계, FK 제약 조건, 데이터 타입 등을 파악하고, 쿼리 작성 시 이를 정확히 반영.
    * **공통 함수 활용:** `[경로]/auth/functions.php`, `[경로]/bbs/includes/functions.php`, `[경로]/admin/includes/admin-utils.php` 등에 정의된 공통 함수를 최대한 활용하고, 유사 기능을 중복 구현하지 말 것. (경로는 프로젝트 구조에 맞게 조정)
6.  **함수 불일치 문제 해결 및 일관성 유지 (핵심 중의 핵심):**
    * AI가 일반적인 PHP 지식이나 다른 프로젝트의 코딩 스타일을 기반으로 함수명, 파라미터, 로직 등을 제안하는 것을 **극도로 경계**할 것.
    * **항상 "[귀사 웹사이트 프로젝트명]" 프로젝트 내에서 실제로 사용되는 함수명, 파라미터 순서 및 개수, 반환 값 형식, 코딩 패턴을 정확히 따를 것.**
    * 새로운 함수나 클래스 메소드 작성 시, 기존 프로젝트의 명명 규칙 및 작성 스타일을 철저히 준수.
    * 안티패턴이나 비효율적인 코드가 기존에 존재하더라도, 스타일 유지가 우선이며 개선은 별도 명시적 요청 시에만 진행.
    * **페이지 제목 변수:** 사용자 페이지는 `$page_title` (snake_case), 관리자 페이지는 `$pageTitle` (camelCase)을 사용할 수 있음 (III.4 참조). (또는 프로젝트의 규칙에 따름) 각 컨텍스트의 헤더 파일 요구사항을 따를 것.
7.  **보안 고려 사항:**
    * **SQL Injection 방지:** `getDbConnection()` (또는 유사 함수)을 통해 얻은 PDO 객체를 사용하여, 모든 DB 쿼리는 **PreparedStatement와 파라미터 바인딩 방식**을 일관되게 사용할 것.
    * **XSS(Cross-Site Scripting) 방지:** 사용자 입력값을 HTML에 출력할 때는 `htmlspecialchars()` 또는 프로젝트 내 공통 `escapeHtml()` 함수를 일관되게 사용할 것. [에디터명] 내용 출력 시에는 해당 라이브러리가 제공하는 정제 기능을 신뢰하되, 저장 전 서버단 필터링도 고려.
    * **CSRF(Cross-Site Request Forgery) 방어:** 모든 상태 변경을 유발하는 폼(POST 요청)에는 `[경로]/auth/functions.php`의 `generateCsrfToken()` (또는 유사 함수)으로 생성된 토큰을 hidden 필드로 포함하고, 서버 측에서 `validateCsrfToken()` (또는 유사 함수)으로 검증할 것. **모달(Modal) 내부에 있는 폼의 경우에도 예외 없이 CSRF 보호를 적용해야 함.**
    * **파일 업로드 보안:** `[경로]/[모듈명]/upload.php`와 같이 파일 업로드 처리 시 확장자 화이트리스트 방식 검증, 파일 크기 제한, 저장 경로 및 파일명 관리 철저히 할 것.
    * **경로 조작 방지:** `include`, `require_once` 사용 시 상대 경로나 사용자 입력 기반 경로를 사용할 때 주의. 가급적 `$base_path` (또는 `BASE_PATH` 상수)와 같은 절대 경로 기준 사용 (III.6 참조).
    * **입력값 새니타이즈:** `sanitizeInput()` 함수 (또는 `[경로]/auth/functions.php`에 정의된 유사한 전역 입력값 처리 함수)는 외부로부터 유입되는 **모든 문자열 데이터에 대해 사용되어야 함.**
8.  **에러 핸들링 및 로깅:**
    * `[경로]/auth/config.php` (또는 프로젝트 설정 파일)에 정의된 에러 보고 설정(예: `error_reporting(E_ALL); ini_set('display_errors', 0); ini_set('log_errors', 1); ini_set('error_log', '[경로]/error.log');`)을 따를 것.
    * 주요 작업(DB 작업, 파일 처리 등) 실패 시 `try-catch` 블록을 사용하여 예외를 처리하고, `error_log()` 함수를 사용하여 상세 오류를 로그 파일에 기록. 사용자에게는 `setFlashMessage('error', '오류 메시지')`를 통해 일반적인 오류 안내.
9.  **주석:**
    * 복잡한 로직이나 중요한 결정 사항에 대해서는 간결하고 명확한 주석을 추가. 기존 파일의 주석 스타일(PHPDoc 형식 또는 일반 주석)을 따를 것.
10. **출력 버퍼링 (`ob_start`, `ob_end_flush`, `ob_clean`):**
    * 페이지 상단에 `ob_start()`를 사용하고, `header()` 함수를 통한 리디렉션 전에 필요시 `ob_end_flush()` 또는 `ob_clean()`을 사용하는 패턴이 관찰될 경우 이를 따를 것. HTTP 헤더 관련 작업을 수행하기 전에 출력이 없도록 관리.
11. **세션 관리:**
    * 세션은 `[경로]/auth/Session.php` 클래스 (또는 유사 클래스/방식)를 통해 관리될 수 있음. 세션 시작 및 관리는 해당 메커니즘을 따를 것.
    * 플래시 메시지는 `$_SESSION['flash_messages']` (또는 유사 세션 변수)를 사용하며, `setFlashMessage`/`getFlashMessages` 함수 (또는 유사 함수)를 통해 관리.
12. **데이터베이스 테이블 초기 설정:**
    * 데이터베이스 테이블의 존재 여부 확인 및 초기 생성 SQL 제공 로직은 프로젝트 전반에 걸쳐 일관된 방식으로 처리할 것. (예: 각 관리 모듈 페이지 또는 중앙 설정 스크립트)
13. **내부 API 엔드포인트:**
    * 내부 API 엔드포인트(예: `/api/get-data.php`)를 호출하거나 개발하는 경우, 해당 API 엔드포인트 역시 본 코딩 가이드라인(특히 보안 관련 항목)을 철저히 준수하여야 함.

## [VIII. AI 요청 작업 - 사용자의 메시지]

---
[여기에 AI에게 요청할 구체적인 작업 내용을 작성하십시오. 예: "회원 목록 페이지에 이메일 검색 기능을 추가해주세요. 관련 파일은 /admin/users.php, /admin/includes/admin-header.php, /js/admin.js 입니다. users 테이블에는 email 컬럼이 존재합니다."]
---

이 프롬프트 문서를 사용하여 "[귀사 웹사이트 프로젝트명]" 프로젝트의 개발 및 유지보수 작업을 AI와 함께 효율적으로 진행하시기를 바랍니다!

 

 

 

 

 

 

 

 

=======================

 

md 파일로 저장해서 활용하시거나, v0같은 경우 소스에 업로드해두면 자동참조됩니다. 제미니 2.5 구글웹어시스턴트는 소스폴더 업로드 후 같이 활용해주면 잘 기억합니다. 

제미니는 아직 지켜보는데 그래도 기억량은 좋네요.

 

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 2개

5개월 전

공유 감사합니다.

sir 에디터 마크다운 적용 얼른 되었으면 좋겠네요. 

5개월 전

감사합니다 ^^

게시글 목록

번호 제목
1081
1080
1078
1074
1070
1068
1061
1056
1053
1046
1045
1044
1036
1033
1028
1027
1025
1023
1016
1014
1013
1012
1009
1008
1005
1004
981
980
979
972