9.2 실습 과제 및 응용 문제

약 5분

본문 듣기
읽기 설정

글자 크기

줄 간격

글꼴

9.2 실습 과제 및 응용 문제

이번 섹션에서는 지금까지 배운 내용을 바탕으로 실습 과제와 응용 문제를 통해 여러분의 이해도를 높이고, 실제로 PHP로 웹 애플리케이션을 구축하는 경험을 쌓아보도록 하겠습니다. 각 실습 과제는 단계별로 진행되어 있으며, 이를 통해 여러분은 PHP의 다양한 기능을 직접 활용할 수 있습니다.

실습 과제

  1. 회원가입 기능 구현

    • 사용자로부터 이름, 이메일, 비밀번호를 입력 받아 데이터베이스에 저장하는 기능을 구현합니다.
    • 비밀번호는 해시 함수를 이용해 안전하게 저장합니다.
    • 입력 데이터에 대한 유효성 체크를 수행합니다.
  2. 로그인 기능 구현

    • 사용자가 이메일과 비밀번호를 입력하면 데이터베이스에서 정보를 확인하고 세션에 사용자 정보를 저장합니다.
  3. 게시판 기능 구현

    • 사용자가 글을 작성, 수정, 삭제할 수 있는 게시판 기능을 만들어 보세요.
    • 글 목록을 페이지네이션하여 보여주는 기능도 추가합니다.
  4. 댓글 기능 구현

    • 게시글에 댓글을 달 수 있는 기능을 추가하고, 각 댓글은 데이터베이스에 저장되도록 구현합니다.
  5. 파일 업로드 구현

    • 사용자가 자신의 프로필 사진을 업로드할 수 있는 기능을 구현합니다.
    • 파일 유형 및 크기 제한을 적용하여 보안성을 높입니다.
  6. 관리자 페이지 구현

    • 관리자가 사용자를 관리하고 게시글 및 댓글을 관리할 수 있는 기능을 추가합니다.
  7. REST API 구현

    • 게시판 기능을 RESTful하게 구현하고 JSON을 이용해 데이터 전송하는 기능을 추가합니다.
  8. 간단한 쇼핑몰 기능 구현

    • 제품 목록 조회, 장바구니에 담기, 주문 생성 등의 기본 쇼핑몰 기능을 구현합니다.

응용 문제

  • 여러분이 만든 회원가입 기능을 개선하여 이메일 인증 기능을 추가해보세요.
  • mysqli와 PDO의 차이를 조사하고, 각각의 장단점에 대해 설명해보세요.
  • 프로젝트 중 발생할 수 있는 SQL Injection과 XSS 공격에 대해 어떻게 방어할 수 있는지 고민해보고, 구현 방법을 설명해보세요.

정리

이번 실습 과제 및 응용 문제를 통해 여러분은 PHP와 MySQL을 활용하여 웹 애플리케이션을 구성하는 법을 실제로 경험하게 됩니다. 이러한 프로젝트 경험은 향후 더 복잡한 애플리케이션을 개발하는 데에 큰 도움이 될 것입니다. 각 기능을 구현하며 발생하는 문제를 스스로 해결해보는 것이 중요합니다.

코드 php
<?php
// 데이터베이스 연결
$dsn = 'mysql:host=localhost;dbname=mydb';
$username = 'root';
$password = '';
try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

// 사용자 등록
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $password = password_hash($_POST['password'], PASSWORD_BCRYPT);
    
    $stmt = $pdo->prepare("INSERT INTO users (name, email, password) VALUES (:name, :email, :password)");
    $stmt->execute(['name' => $name, 'email' => $email, 'password' => $password]);
    echo '회원가입이 완료되었습니다!';
}
?>

댓글 0

댓글을 남기려면 로그인하세요.

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.