# Infoway 멀티테넌트 SaaS 플랫폼 개발 규칙 ## 프로젝트 개요 - **이름**: DLIVE-Zinpack-AI (Infoway) - **타입**: 멀티테넌트 콘텐츠 관리 시스템 - **구조**: _infoway(비즈니스 로직) + _zinpack(ProcessWire CMS) - **도메인**: {tenant}.dliveletter.kr ## 기술 스택 제약사항 ⚠️ - **PHP**: 5.3.29 (2014년) - namespace, [], ::class, trait 사용 불가 - **Database**: MariaDB 5.0.96 (2010년) - **웹서버**: Apache + mod_rewrite - **CMS**: ProcessWire 2.5 - **필수 보안**: magic_quotes_gpc, addslashes() 사용 ## 멀티테넌트 아키텍처 핵심 - **ep_code**: 기업(Enterprise) 고유 코드 (예: ep87579064668809f3d632cc) - **gp_code**: 그룹 코드 (기본값: "all") - **서브도메인**: wizwin.dliveletter.kr → ep_code 자동 조회 - **세션 캐싱**: 5분 TTL (subdomain_init.php) - **완전 격리**: 모든 쿼리에 WHERE ep_code = '$iw[store]' 필수 ## 디렉토리 구조 ``` infoway/ ├── _infoway/ # 비즈니스 로직 시스템 │ ├── bbs/ │ │ ├── admin/ # 관리자 페이지 (304개 파일) │ │ ├── m/ # 모바일/사용자 페이지 (127개 파일) │ │ └── super/ # 슈퍼관리자 (71개 파일) │ ├── include/ │ │ ├── common.php # 전역 초기화 │ │ ├── config.php # 설정 및 테이블 정의 │ │ ├── subdomain_init.php # 서브도메인 자동 초기화 │ │ ├── subdomain_handler.php # 서브도메인 검증 함수 │ │ ├── member_check.php # 권한 체크 │ │ └── member_super.php # 슈퍼관리자 권한 │ ├── design/ # CSS/JS/이미지 │ ├── main/ # 테넌트별 콘텐츠 │ ├── scripts/ # 서브도메인 관리 스크립트 │ └── sql/ # SQL 스크립트 └── _zinpack/ # ProcessWire CMS (콘텐츠 표시) ├── site/ └── wire/ ``` ## 코딩 규칙 ### 1. PHP 5.3 호환성 (필수) ```php // ✅ 올바른 코드 array('key' => 'value'); // 배열 선언 $className = 'MyClass'; // 클래스명 문자열 function() use ($var) { } // 클로저 (제한적) mysql_connect(); // MySQL 연결 (deprecated but required) // ❌ 사용 금지 (PHP 5.4+) ['key' => 'value']; // 짧은 배열 문법 namespace App\Controllers; // 네임스페이스 ClassName::class; // ::class 상수 trait MyTrait { } // Trait ``` ### 2. 테넌트 격리 (절대 필수) 🚨 ```php // ✅ 올바른 쿼리 (ep_code 필터 포함) $sql = "SELECT * FROM {$iw['member_table']} WHERE ep_code = '{$iw['store']}' AND mb_code = '{$iw['member']}'"; // 그룹 사용 시 gp_code도 추가 if ($iw['group'] != 'all') { $sql .= " AND gp_code = '{$iw['group']}'"; } // ❌ 잘못된 쿼리 (ep_code 누락 - 치명적 오류!) $sql = "SELECT * FROM {$iw['member_table']} WHERE mb_code = '{$iw['member']}'"; // 다른 테넌트 데이터 노출! ``` ### 3. BBS 표준 패턴 ``` 모듈명_기능_동작.php 파일 구조: ├── {module}_list.php # 목록 조회 ├── {module}_view.php # 상세 보기 ├── {module}_write.php # 작성 폼 ├── {module}_write_ok.php # 작성 처리 ├── {module}_edit.php # 수정 폼 ├── {module}_edit_ok.php # 수정 처리 └── {module}_delete.php # 삭제 처리 예시: - member_data_list.php # 회원 목록 - shop_order_write_ok.php # 주문 처리 - book_support_edit.php # 전자책 후원 수정 ``` ### 4. 파일 헤더 템플릿 ```php