본문 바로가기
PHP로 웹사이트 만들기

PHP로 온라인 쇼핑몰 웹사이트 만들기

by blogfine 2025. 1. 19.

온라인 쇼핑몰은 제품을 판매하는 중요한 플랫폼입니다. PHP를 사용하여 강력한 온라인 쇼핑몰 웹사이트를 만드는 방법을 배우는 것은 많은 개발자에게 유용한 기술입니다. 이 글에서는 PHP로 온라인 쇼핑몰을 구축하는 데 필요한 기본적인 개념과 실용적인 예제를 제공합니다.

1. 온라인 쇼핑몰 웹사이트의 기본 구조

온라인 쇼핑몰 웹사이트는 여러 중요한 구성 요소로 이루어져 있습니다. 그 중 대표적인 기능은 제품 목록, 장바구니, 결제 시스템, 사용자 관리 등이 있습니다. PHP는 서버 측 스크립트 언어로, 이러한 웹사이트의 백엔드 기능을 처리하는 데 필수적인 역할을 합니다.

기본적인 온라인 쇼핑몰 기능

  • 제품 목록 페이지
  • 장바구니 기능
  • 주문 및 결제 시스템
  • 회원 가입 및 로그인 기능
  • 관리자 대시보드

2. 데이터베이스 설계 및 사용자 관리

온라인 쇼핑몰을 구축하려면 사용자와 제품 정보를 저장할 데이터베이스가 필요합니다. MySQL을 사용하여 사용자 테이블과 제품 테이블을 생성하고, 이를 통해 웹사이트와 상호작용할 수 있습니다. 예를 들어, 사용자 로그인, 제품 추가 및 주문 정보 등을 처리하기 위해 데이터베이스 설계가 필요합니다.

MySQL 데이터베이스 설계


-- 사용자 테이블
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100) NOT NULL
);

-- 제품 테이블
CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    description TEXT,
    price DECIMAL(10, 2) NOT NULL,
    stock INT NOT NULL
);

-- 주문 테이블
CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    total_price DECIMAL(10, 2) NOT NULL,
    order_date DATETIME DEFAULT CURRENT_TIMESTAMP
);
    

위 SQL 쿼리는 사용자 정보, 제품 정보, 그리고 주문 정보를 저장할 테이블을 생성하는 예시입니다. 사용자의 정보를 안전하게 저장하고, 제품의 가격과 재고 수량을 관리할 수 있습니다.

3. 제품 목록 페이지 만들기

온라인 쇼핑몰의 첫 번째 핵심 페이지는 제품 목록을 보여주는 페이지입니다. 사용자는 이 페이지에서 다양한 제품을 보고, 원하는 제품을 선택하여 장바구니에 담을 수 있습니다. 제품 목록은 MySQL 데이터베이스에서 가져와 동적으로 생성됩니다.

$conn = new mysqli("localhost", "root", "", "shop_db");

$sql = "SELECT * FROM products";
$result = $conn->query($sql);

while ($row = $result->fetch_assoc()) {
    echo "<div class='product'>";
    echo "<h3>" . htmlspecialchars($row['name']) . "</h3>";
    echo "<p>" . htmlspecialchars($row['description']) . "</p>";
    echo "<p>" . number_format($row['price'], 2) . " 원</p>";
    echo "<button class='add-to-cart' data-id='" . $row['id'] . "'>장바구니에 담기</button>";
    echo "</div>";
}

위 코드는 MySQL 데이터베이스에서 제품 정보를 가져와 동적으로 웹 페이지에 출력하는 예시입니다. 각 제품은 '장바구니에 담기' 버튼을 클릭하여 장바구니에 추가할 수 있습니다.

4. 장바구니 기능 구현

장바구니는 쇼핑몰의 핵심 기능 중 하나입니다. 사용자는 장바구니에 담은 제품을 확인하고, 결제를 진행할 수 있습니다. 장바구니 기능은 PHP 세션을 이용하여 구현할 수 있습니다. 사용자가 제품을 장바구니에 추가할 때마다 세션에 저장하고, 이를 표시하는 방식으로 진행됩니다.

session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $product_id = $_POST['product_id'];
    $quantity = $_POST['quantity'];

    // 장바구니에 제품 추가
    $_SESSION['cart'][$product_id] = $quantity;
}

echo "<h2>장바구니</h2>";
foreach ($_SESSION['cart'] as $product_id => $quantity) {
    // 제품 정보를 MySQL에서 가져오기
    $sql = "SELECT * FROM products WHERE id = $product_id";
    $result = $conn->query($sql);
    $product = $result->fetch_assoc();
    echo "<p>" . htmlspecialchars($product['name']) . " - 수량: $quantity</p>";
}

 

위 코드는 세션을 사용하여 장바구니에 담은 제품을 저장하고, 이를 화면에 표시하는 예시입니다. 사용자가 장바구니에 담은 제품을 확인하고, 결제 페이지로 이동할 수 있습니다.

5. 결제 시스템 추가

온라인 쇼핑몰에서 결제 시스템은 중요한 부분입니다. 결제 시스템을 구현하려면, 실제 결제 서비스를 연동해야 합니다. 이를 위해서는 결제 API(예: PayPal, 카카오페이, 네이버페이 등)를 사용하여 안전하게 결제를 처리할 수 있습니다. 예를 들어, PayPal API를 사용하여 결제를 처리하는 방법은 다음과 같습니다.

PayPal 결제 예시


// PayPal API 연동을 위한 코드 예시
$paypal_url = 'https://www.paypal.com/cgi-bin/webscr';
$business_email = 'your_paypal_email@example.com';
$currency = 'KRW';

// 결제 정보 설정
$payment_data = [
    'cmd' => '_xclick',
    'business' => $business_email,
    'item_name' => '제품 이름',
    'amount' => '결제 금액',
    'currency_code' => $currency,
    'return' => '결제 완료 후 리다이렉션 URL',
    'cancel_return' => '결제 취소 시 리다이렉션 URL'
];

// PayPal로 결제 요청 보내기
$paypal_url .= '?' . http_build_query($payment_data);
header("Location: $paypal_url");
    

위 코드에서는 PayPal API를 사용하여 결제를 요청하는 방법을 보여줍니다. 사용자가 결제를 완료하면, 결제 정보를 처리하여 주문을 완료하는 로직을 추가해야 합니다.

6. 보안 고려 사항

온라인 쇼핑몰에서 보안은 매우 중요합니다. 사용자 개인정보, 결제 정보, 주문 내역 등을 안전하게 보호해야 합니다. 이를 위해 SSL 인증서(HTTPS)를 사용하고, SQL 인젝션 공격을 방지하기 위해 준비된 쿼리(Prepared Statements)를 사용하는 것이 좋습니다. 또한, 비밀번호는 반드시 해싱하여 저장해야 하며, 세션 관리에 주의해야 합니다.

SQL 인젝션 방지

SQL 인젝션 공격을 방지하기 위해서는 사용자 입력값을 SQL 쿼리문에 직접 삽입하지 않고, 준비된 쿼리(Prepared Statements)를 사용해야 합니다. 예를 들어:


$stmt = $conn->prepare("SELECT * FROM products WHERE id = ?");
$stmt->bind_param("i", $product_id);
$stmt->execute();
$result = $stmt->get_result();
    

위 예시처럼 prepare()bind_param()를 사용하여 SQL 쿼리를 안전하게 실행할 수 있습니다.

7. 결론

PHP로 온라인 쇼핑몰 웹사이트를 만드는 것은 다양한 기능을 구현하는 재미있는 프로젝트입니다. 이 글에서는 기본적인 제품 목록, 장바구니, 결제 시스템 등을 구축하는 방법을 소개했습니다. PHP와 MySQL을 활용하여 강력하고 안전한 쇼핑몰을 만들 수 있으며, 이를 통해 전자상거래 사이트를 운영할 수 있습니다. 보안과 사용자 경험을 최우선으로 고려하여, 고객들에게 더 나은 서비스를 제공할 수 있는 쇼핑몰을 만들어보세요.