💡 velagold-web 기반 교육 플랫폼

실제 코드로 배우는
PHP 쇼핑몰 개발

쥬얼리 도매 쇼핑몰 velagold-web 소스를 분석하며
실전 PHP 웹 개발의 모든 것을 배웁니다.

9
학습 모듈
15+
제작 가능 프로젝트
7
학습 단계
PHP
+MySQL+Docker

이 소스로 만들 수 있는 것들

velagold-web 레포지토리의 코드 구조와 패턴을 활용해 제작 가능한 프로젝트 목록입니다.

중급 🛍️

쇼핑몰 (E-Commerce)

상품 등록·수정·삭제, 카테고리 관리, 이미지 업로드, 장바구니, 결제까지 완전한 쇼핑몰

PHP MySQL JavaScript
→ 지금 바로 체험하기
초급 👥

회원 관리 시스템

회원가입, 로그인/로그아웃, 세션 관리, 회원등급 구분, 소셜 로그인(네이버 OAuth2) 연동

PHP MySQL OAuth2
→ 쇼핑몰 회원 시스템 체험
고급 💳

PG사 결제 연동 시스템

KCP 결제 모듈 연동, 주문 생성·취소·환불 처리, 결제 상태 관리 및 정산 내역 기록

PHP KCP API MySQL
→ 결제 플로우 & 코드 보기
중급 🏠

관리자 대시보드

주문 현황, 회원 목록, 매출 통계, 상품 관리를 한눈에 볼 수 있는 관리자 전용 패널

PHP Chart.js CSS
→ 대시보드 & 통계 체험
고급 🥇

금/귀금속 거래 플랫폼

금 시세 연동, 매입/매도 기록, 잔고 관리, 지점별 재고 추적, 거래 내역 엑셀 출력

PHP MySQL API
→ 지금 바로 체험하기
초급 📋

게시판 / 커뮤니티

공지사항, FAQ, 자유게시판, 파일 첨부, 댓글, 페이징 처리가 포함된 게시판 시스템

PHP MySQL CKEditor
→ 게시판 데모 체험
중급 📦

Docker 개발 환경 자동화

docker-compose 하나로 PHP+Apache+MySQL+phpMyAdmin 환경 구성, 팀 개발 환경 표준화

Docker Compose
→ Docker 설정 가이드 보기
초급 👤

마이페이지 시스템

주문 내역 조회, 배송 추적, 반품/수리 요청, 거래처 회원 관리, 포인트/적립금 관리

PHP MySQL CSS
→ 주문 내역 & 마이페이지 체험
중급 🏪

가맹점/지점 관리 시스템

가맹점 등록·관리, 지점별 회원 분류, 상품 노출 권한 설정, 정산 관리

PHP MySQL
→ 지점별 현황 체험
중급 📧

이메일 자동 발송 시스템

주문 확인, 배송 안내, 회원가입 환영, 비밀번호 찾기 등 트리거 기반 이메일 발송

PHP SMTP
→ 회원 & 이메일 시스템 보기
중급 🖼️

이미지 업로드 & 리사이징

상품 이미지 다중 업로드, 썸네일 자동 생성, 대/중/소 크기별 관리, 대체 이미지 fallback

PHP GD Library
→ 상품 이미지 관리 체험
고급 🔄

데이터 마이그레이션 도구

CSV/Excel 임포트, 레거시 DB에서 신규 스키마로 데이터 이전, Python 마이그레이션 스크립트

PHP Python MySQL
→ CSV/Excel 임포트 체험

디렉토리별 모듈 학습 가이드

velagold-web의 각 폴더 구조와 핵심 파일, 학습 포인트를 정리했습니다.

⚙️
_sys — 시스템 설정 & 라이브러리
/_sys/_cfg/ | /_sys/_libs/ | /_sys/_kcp/

웹 루트 외부에 위치해 직접 접근을 차단하는 핵심 설정 파일들. 보안의 첫 번째 원칙인 설정 파일 분리를 실습합니다.

_cfg/config.php DB 접속 정보, 사이트 기본 설정값 관리
_libs/*.php 재사용 가능한 클래스 라이브러리 (DB, Auth, Util)
_kcp/ KCP PG사 결제 SDK 모듈
설정 파일을 웹 루트 외부에 분리하는 이유와 방법
PHP require_once 와 __DIR__ 상수 활용법
외부 결제 SDK 연동 구조 이해
🔗
_inc — 공통 인클루드 파일
/_inc/

모든 페이지에서 공통으로 include하는 헤더, 푸터, DB 연결 등 공통 컴포넌트. PHP 레이아웃 분리 패턴을 배웁니다.

header.php 공통 HTML 헤더, 네비게이션, 세션 체크
footer.php 공통 푸터, JavaScript 삽입
db.php PDO/MySQLi DB 연결 싱글턴
PHP include/require 의 차이점과 올바른 사용법
레이아웃 분리로 코드 중복 제거하기
DB 커넥션 싱글턴 패턴
_inc/header.php (예시 구조)
// 모든 페이지 공통 헤더 require_once dirname(__DIR__) . '/_sys/_cfg/config.php'; session_start(); // 로그인 체크 (필요한 페이지만) if (!isset($_SESSION['member_id'])) { header('Location: /member/login.php'); exit(); }
👤
member — 회원 시스템
/member/

회원가입부터 로그인, 소셜 로그인까지. PHP 웹 개발의 핵심인 세션 기반 인증 시스템을 학습합니다.

join.php 회원가입 폼 + 유효성 검사 + DB 저장
login.php 로그인 처리, 세션 생성, 비밀번호 해시 검증
logout.php 세션 종료 및 리다이렉트
PHP session_start(), $_SESSION 을 이용한 상태 관리
password_hash() / password_verify() 로 안전한 비밀번호 저장
네이버 OAuth2 소셜 로그인 플로우 구현 (naver/ 디렉토리)
특수문자 허용 비밀번호 정규식 검증: preg_match()
💍
goods — 상품 관리
/goods/

쇼핑몰의 핵심인 상품 CRUD와 이미지 업로드. 대/중/소 이미지 fallback 패턴도 학습합니다.

goods_list.php 상품 목록 + 카테고리 필터 + 페이징
goods_view.php 상품 상세 페이지, 이미지 슬라이더
goods_write.php 상품 등록/수정 + 이미지 다중 업로드
$_FILES 를 이용한 파일 업로드 처리 및 보안
이미지 없을 때 대체 이미지(fallback) 처리 패턴
LIMIT + OFFSET 을 활용한 페이징 쿼리
가맹점별 상품 노출 권한 제어 (숨김 기능)
🛒
order — 주문 & 결제
/order/ | /_sys/_kcp/

실제 서비스에서 가장 복잡한 주문/결제 흐름. KCP 연동부터 수리 요청 주문까지 다양한 케이스를 학습합니다.

order.php 주문서 작성 + 재고 확인 + 임시 저장
settle.php KCP 결제 요청 및 결과 처리
order_repair.php 수리 요청 전용 주문 플로우
결제 요청 → 결제 완료 → 주문 확정 트랜잭션 처리
PHP PDO 트랜잭션(BEGIN/COMMIT/ROLLBACK) 사용법
PG사 콜백(webhook) 처리 패턴
재고 감소 시 동시성 문제 해결 (SELECT FOR UPDATE)
📊
mypage — 마이페이지
/mypage/

회원별 주문 내역, 거래처 관리, 판매 등록 등 로그인 후 개인화 기능을 구현하는 방법을 배웁니다.

order_list.php 내 주문 내역 조회 + 상태별 필터
member_manage.php 거래처 회원 관리 (가맹점 전용)
sell_write.php 판매 등록 + 품목 코드 검색
세션 기반 본인 데이터만 조회하는 WHERE member_id = ? 패턴
권한(가맹점/일반회원)에 따른 메뉴 분기 처리
품목 코드 AJAX 검색 + 자동완성 구현
🔑
sw-adm — 관리자 페이지
/sw-adm/ (포트 3005)

별도 포트(3005)로 분리 운영되는 관리자 전용 패널. 금/현금 관리, 주문 처리, 회원 관리 등 백오피스 기능을 담당합니다.

index.php 관리자 대시보드, 매출 통계 차트
gold_manage.php 금/현금 입출금 관리, 잔고 조회
order_manage.php 주문 상태 변경, 배송 처리
관리자 권한 체크 미들웨어 패턴
Docker로 포트 분리하여 admin/user 서버 구분하는 방법
금/현금 입출금 이중 장부 설계 (balance_history 테이블)
CSS 가로정렬·크기조정·가운데정렬 디자인 패턴
📈
gold_record — 금 거래 기록
/gold_record/

금 시세 기반 매입/매도 거래 기록 시스템. 지점별 재고 관리와 대용량 데이터 마이그레이션 실습 포함.

gold_record_list.php 거래 내역 조회 + 날짜/지점 필터
../migrate_dmc_gold_record.sql DMC → Velagold DB 마이그레이션 SQL
../migrate_gold_record.py Python으로 대용량 데이터 이전 스크립트
금융 데이터의 정확한 소수점 처리 (DECIMAL 타입)
branch_idx 기반 지점 분기 쿼리 최적화
Python + pymysql 로 DB 마이그레이션하는 방법
📌
board & customer — 게시판 & 고객센터
/board/ | /customer/

CKEditor 기반 리치 텍스트 게시판과 파일 첨부, 페이징 처리까지 완성된 게시판 시스템.

board_list.php 게시글 목록 + 검색 + 페이징
board_write.php CKEditor 연동 글쓰기 + 파일 첨부
../cheditor/ CKEditor 에디터 파일 및 첨부 디렉토리
CKEditor 5 PHP 연동 및 이미지 업로드 핸들러
LIKE 검색 쿼리와 XSS 방지 htmlspecialchars()
페이징: 전체 개수 COUNT(*) + LIMIT/OFFSET 패턴

7단계 학습 로드맵

velagold-web 소스를 단계별로 분석하며 실전 PHP 개발자로 성장하는 커리큘럼입니다.

01

환경 설정 & 프로젝트 구조 이해

Docker로 개발 환경 구성 후 디렉토리 구조를 파악합니다. 왜 _sys를 웹 루트 밖에 두는지 이해합니다.

docker-compose.yml _sys/_cfg/config.php index.php README.md
02

공통 컴포넌트 & DB 연결

_inc 폴더의 헤더/푸터 분리 패턴과 PDO를 이용한 DB 연결, SQL Injection 방지를 학습합니다.

_inc/header.php _inc/footer.php _sys/_libs/DB.php init.sql
03

회원 시스템 구현

회원가입 유효성 검사, 비밀번호 해시, 세션 기반 로그인/로그아웃을 실습합니다. 네이버 OAuth2도 분석합니다.

member/join.php member/login.php naver/callback.php OAuth2/
04

상품 관리 & 이미지 업로드

상품 CRUD, 다중 이미지 업로드, 썸네일 생성, 카테고리 계층 구조 설계를 학습합니다.

goods/goods_list.php goods/goods_write.php upload/ image/
05

주문 & 결제 시스템

장바구니부터 KCP 결제 연동, 트랜잭션 처리, 주문 상태 관리까지 e-commerce의 핵심을 마스터합니다.

order/order.php order/settle.php _sys/_kcp/ order/order_repair.php
06

관리자 페이지 & 금 거래 시스템

관리자 대시보드, 금/현금 잔고 이중 장부 설계, 지점별 거래 기록 시스템을 구현합니다.

sw-adm/ gold_record/ fix_dmc_gold_record.sh insert_dmc_balance_history.sql
07

배포 & 데이터 마이그레이션

Docker 프로덕션 배포, Python 마이그레이션 스크립트, CSV 임포트, 서버 이전 체크리스트를 완성합니다.

docker-compose.yml migrate_gold_record.py migrate_dmc_gold_record.sql 기기상품등록_템플릿.csv

사용 기술 스택

velagold-web에서 실제로 사용하는 기술들입니다. 각각의 역할을 이해하고 공식 문서와 함께 학습하세요.

🐘
PHP
v7.4+ (Apache)
🐬
MySQL
v8.0 + PDO
🐳
Docker
docker-compose
🟨
JavaScript
Vanilla + jQuery
🎨
CSS
순수 CSS3
✏️
CKEditor
리치 텍스트 에디터
💳
KCP
PG사 결제 SDK
🔐
OAuth2
네이버 소셜 로그인
🐍
Python
데이터 마이그레이션
🔧
phpMyAdmin
DB 관리 UI
로컬 개발 환경 시작 (README.md 기반)
# 1. 저장소 클론 git clone <repository-url> velagold-web cd velagold-web # 2. Docker 실행 (첫 실행 시 1~2분 소요) docker-compose up -d # 3. 서비스 접속 # 고객 쇼핑몰 → http://localhost:3006 # 관리자 페이지 → http://localhost:3005 (admin / admin123) # phpMyAdmin → http://localhost:3007 # 4. DB 접속 정보 # host: localhost | port: 3306 # db: velagold | user: velagold | pw: vela2022