# Infoway 개발 가이드 ## 개발 환경 설정 ### 필수 요구사항 - PHP 5.3.29 - MariaDB/MySQL 5.0+ - Apache 2.x + mod_rewrite - Git ### 로컬 개발 환경 (Windows) #### 1. hosts 파일 설정 ``` # C:\Windows\System32\drivers\etc\hosts 편집 (관리자 권한) 127.0.0.1 www.dliveletter.kr 127.0.0.1 wizwin.dliveletter.kr 127.0.0.1 parkjonggak.dliveletter.kr 127.0.0.1 test.dliveletter.kr ``` #### 2. Apache VirtualHost 설정 ```apache # httpd-vhosts.conf ServerName www.dliveletter.kr ServerAlias *.dliveletter.kr DocumentRoot "E:/wizwin_stb/DLive/dliveletter.kr/DLIVE-Zinpack-AI/infoway/_infoway" AllowOverride All Require all granted ``` #### 3. 데이터베이스 설정 ```bash # MySQL 접속 mysql -u root -p # 데이터베이스 생성 CREATE DATABASE infoway CHARACTER SET utf8 COLLATE utf8_general_ci; # SQL 파일 임포트 mysql -u root -p infoway < infoway.sql ``` #### 4. 설정 파일 수정 ```php // include/config.php $mysql_host = 'localhost'; $mysql_user = 'root'; $mysql_password = 'your_password'; $mysql_db = 'infoway'; $iw['server_path'] = "E:/wizwin_stb/DLive/dliveletter.kr/DLIVE-Zinpack-AI/infoway/_infoway"; $iw['default_domain'] = "www.dliveletter.kr"; ``` ## 새 기능 개발 워크플로우 ### 1. BBS 모듈 개발 #### 단계별 프로세스 ``` 1. 요구사항 분석 ↓ 2. 데이터베이스 테이블 설계 ↓ 3. 파일 구조 생성 (BBS 패턴) ↓ 4. 코드 작성 (PHP 5.3 호환) ↓ 5. 테넌트 격리 테스트 ↓ 6. 보안 검증 ↓ 7. 배포 ``` #### 파일 템플릿 **목록 페이지 (module_list.php)** ```php
번호 제목 등록일 관리
수정 삭제
``` **작성 처리 (module_write_ok.php)** ```php ``` ### 2. 데이터베이스 테이블 추가 ```sql -- 새 테이블 생성 템플릿 CREATE TABLE IF NOT EXISTS `iw_module_table` ( `module_no` int(11) NOT NULL AUTO_INCREMENT COMMENT '번호', `ep_code` varchar(20) NOT NULL COMMENT '테넌트 코드', `gp_code` varchar(20) NOT NULL COMMENT '그룹 코드', `mb_code` varchar(20) DEFAULT NULL COMMENT '작성자', `module_title` varchar(255) NOT NULL COMMENT '제목', `module_content` text COMMENT '내용', `module_datetime` datetime DEFAULT NULL COMMENT '등록일', PRIMARY KEY (`module_no`), KEY `idx_ep_gp` (`ep_code`,`gp_code`), KEY `idx_datetime` (`module_datetime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='모듈 테이블'; ``` **config.php에 테이블 추가** ```php // include/config.php $iw['module_table'] = $iw['table_prefix'] . "module_table"; ``` ### 3. 프론트엔드 개발 #### Modern Card UI 사용 ```html

제목

내용

``` #### jQuery 사용 (제한적) ```javascript // PHP 5.3 환경에서는 구버전 jQuery 사용 ``` #### AJAX 요청 ```javascript $.ajax({ url: 'ajax_process.php', type: 'POST', data: { type: '', ep: '', gp: '', action: 'submit', data: value }, success: function(response) { alert('성공'); }, error: function() { alert('실패'); } }); ``` ## 테스트 가이드 ### 1. 테넌트 격리 테스트 ``` 시나리오: 1. 테넌트 A (wizwin) 로그인 2. 데이터 생성 3. 테넌트 B (parkjonggak) 로그인 4. 테넌트 A의 데이터가 보이지 않는지 확인 확인 항목: ✅ 목록에 다른 테넌트 데이터 없음 ✅ 직접 URL 접근 차단 (다른 ep_code) ✅ 파일 업로드 경로 분리 ``` ### 2. 권한 테스트 ``` 시나리오: 1. 일반 회원으로 로그인 2. 관리자 페이지 접근 시도 3. "잘못된 접근입니다" 메시지 확인 확인 항목: ✅ member_check.php 권한 체크 ✅ URL 직접 입력 차단 ✅ POST 요청 권한 검증 ``` ### 3. 보안 테스트 ``` 테스트 항목: 1. SQL Injection - ' OR '1'='1 입력 - addslashes() 확인 2. XSS - 입력 - htmlspecialchars() 확인 3. 직접 접근 - URL에서 파일 직접 호출 - _INFOWAY_ 상수 체크 ``` ## 디버깅 ### 에러 로그 확인 ```php // 디버그 모드 활성화 (개발 시만) error_reporting(E_ALL); ini_set('display_errors', 1); // 로그 출력 error_log("Debug: " . print_r($variable, true)); ``` ### 쿼리 디버깅 ```php // 쿼리 출력 echo $sql; exit; // 결과 확인 print_r($row); exit; ``` ### 세션 디버깅 ```php // 세션 내용 확인 echo "
";
print_r($_SESSION);
echo "
"; exit; ``` ## 코드 스타일 가이드 ### PHP ```php // 들여쓰기: 탭 // 중괄호: 같은 줄 if ($condition) { // 코드 } else { // 코드 } // 함수명: snake_case function get_member_info($mb_code) { // ... } // 변수명: snake_case $member_info = array(); ``` ### SQL ```sql -- 대문자: 키워드 -- 들여쓰기: 가독성 우선 SELECT column1, column2 FROM table_name WHERE ep_code = 'value' AND condition = 'value' ORDER BY column1 DESC; ``` ### HTML/CSS ```html
내용
``` ## Git 워크플로우 ### 브랜치 전략 ```bash main (master) # 프로덕션 ├─ develop # 개발 │ ├─ feature/module-name # 기능 개발 │ ├─ bugfix/issue-name # 버그 수정 │ └─ hotfix/critical-bug # 긴급 수정 ``` ### 커밋 메시지 ```bash # 형식 [TYPE] 제목 본문 (선택) 관련 이슈: #123 # TYPE 종류 [FEAT] 새 기능 [FIX] 버그 수정 [DOCS] 문서 수정 [STYLE] 코드 포맷팅 [REFACTOR] 리팩토링 [TEST] 테스트 코드 [CHORE] 기타 작업 # 예시 [FEAT] AI 명함 목록 페이지 추가 - BBS 패턴 적용 - ep_code 테넌트 격리 - Modern Card UI 적용 관련 이슈: #45 PHP 5.3 호환: ✅ 테넌트 테스트: ✅ ``` ## 참고 자료 - [.cursorrules](.cursorrules): 프로젝트 규칙 - [architecture.md](../analysis/architecture.md): 아키텍처 - [multitenant.md](../analysis/multitenant.md): 멀티테넌트 - [php53-constraints.md](../analysis/php53-constraints.md): PHP 5.3 제약 - [troubleshooting.md](troubleshooting.md): 문제 해결 --- **마지막 업데이트**: 2024-11-05 **다음 문서**: [배포 가이드](deployment.md)