ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 게시판 페이지 만들기_1(list, paging, searching)
    IT/웹 개발 2024. 2. 27. 16:55

    [이 블로그는 해킹 공부하면서 가볍게 정리용으로 기록 및 내 생각을 끄적여 두기 위한 블로그(라 쓰고 일기라 읽는)이다.]

     

    • 목차
    1. 게시판 페이지 화면
    2. 코드(1)
    3. 코드 설명
    4. 코드(2)
    5. 코드 설명
    6. 코드(3)
    7. 코드 설명

    1. 게시판 페이지 화면

    우선 게시판 페이지를 만든다고 생각해 보면 내가 쓴 게시글이 어딘가에 저장이 되고 그걸 다시 불러올 때 저장된 곳을 찾아 불러오는 메커니즘을 떠올린다. 그럼 이때 저장되는 곳은 db서버를 떠올리게 된다. 그럼 db서버에 게시판을 위한 테이블을 하나 더 만들어야 된다. 그리고 페이지에 출력할 정보들을 테이블 컬럼에 추가하도록 한다. (번호, 제목, 글쓴이, 날짜, 조회수)

     

     

     

    2. 코드(1)

     

     

    3. 코드 설명

     

    1) session.php 와 userboard_db.php 파일을 include 함수로 호출

     

    2) 페이징 설정

    $recordsPerPage 한 페이지에 표시되는 게시물의 개수를 20개로 지정

    $page 현재 페이지 번호를 가져오거나, 값이 없을 경우 1로 표시

    $offset 현재 페이지에 표시될 게시물의 시작 위치를 계산. (ex 2번째 페이지일 경우 33번 코드에 대입했을 때 20번째 열부터 20개를 가져와 내림차순으로 정렬하게 된다.)

     

    3) 검색 기능

    $searchType 값을 지정하지 않았다면 제목으로 우선 검색되게 설정

    $searchValue, $searchDate 검색에 사용되는 조건들을 설정

    $searchConditions 검색 조건을 저장하는 배열

    escape_string을 사용하여 특수문자를 사용한 sql인젝션 공격을 방어하기 위해 사용했다.

     

    4) 검색 조건에 따른 SQL 쿼리 생성

    $searchCondition 검색 조건을 포함한 WHERE 절을 생성하여 like로 부분적으로 일치하는 값을 가져온다. 

     

    5) 데이터베이스에서 게시물을 가져오는 SQL 쿼리문

    $sql 게시물을 가져오는 SQL 쿼리를 생성하고 검색 조건에 따라 WHERE 절이 추가되어 검색

    $sql2 앞서 변수로 저장한 쿼리를 실행

     

    6) 결과 행들을 배열로 변환

    $rows는 $sql2에서 얻은 결과 행들을 배열로 변환한다.

     

    7) 전체 게시물 수와 전체 페이지 수

    $totalPosts 전체 게시물 수

    $totalPages 전체 페이지 수

     

     

    4. 코드(2)

     

     

    5. 코드 설명

     

    1) searchType 에 따른 제목과 글쓴이를 스크롤하여 고를 수 있는 select 태그를 사용

     

    2) 검색 조건을 입력하는 input 태그에 입력 값에 HTML Entity 인코딩을 하는 함수를 사용했다. XSS를 방지하기 위해 특수문자들을 HTML Entity로 변환한다.  ex) < >   =>   &lt; &gt;

     

    3) datepicker 는 검색 조건에 날짜 입력을 달력에서 선택할 수 있는 기능이다.

     

     

    6. 코드(3)

     

     

    7. 코드 설명

     

    1) colgruop은 각 테이블의 열 그룹이고 col은 열을 나타내며 width 속성으로 넓이를 지정했다.

     

    2) thead는 각 열의 제목을 나타내며 최상단에 표시된다.

     

    3) startIndex는 foreach 문을 통해 늘어나는 index값을 1씩 더해 화면에 표시되는 Number의 값이 증가하여 가장 나중에 게시한 게시물이 1번의 게시물 번호를 얻게 된다.

     

    4) foreach 문은 코드(1) 에 저장된 raw의 현재 배열이 index에 저장되고 그 값이 result에 저장된다. 이때 화면에 현재 raw의 배열이 출력되면 다시 처음으로 돌아가 2번째 index에 그다음 배열이 저장되어 result에 저장되는 것을 반복한다.

     

    5) for 문은 page를 나타내며 i가 totalPages 보다 같거나 작으면 i가 1씩 증가하여 페이지가 늘어나게 된다. 이때 코드(1)의 totalPages를 보면 21개의 totalPosts가 되기 전까진 소수점 반올림을 하여 1의 값을 가지게 된다. 21개가 출력된 후 2가 되어 같거나 작다의 조건이 성립하므로 i는 증가하여 page표시가 1,2로 출력된다.

    'IT > 웹 개발' 카테고리의 다른 글

    게시판 페이지 만들기_3(write2)  (0) 2024.02.29
    게시판 페이지 만들기_2(write)  (0) 2024.02.29
    마이페이지 만들기_2(update)  (0) 2024.02.27
    마이페이지 만들기_1  (0) 2024.02.27
    메인페이지 만들기  (0) 2024.02.27
Designed by Tistory.