이번 실습에서는 게시판을 만들어볼 것이다.
기본적으로 게시판 CRUD에다가 파일 업로드, 좋아요, 조회수 표시, 페이징, 검색 등등 꽤 만들 기능이 많아서 게시판 만들기(10)까지 나올 것 같다. 기능도 많고 CSS도 많이 들어갈 것 같아서 먼저 대강 이미지를 그려봤다.
두 번째 게시판 글 세부 내용 사진은 그리기 귀찮아져서 저런 건 절대 아니다. 아무튼 아니다.
게시판 파일을 하나 만들고 Test DB를 구축하자.
mysql> CREATE TABLE board (
-> `username` varchar(20) NOT NULL,
-> `title` varchar(20),
-> `views` int(5) DEFAULT 0,
-> `date` char(10),
-> `time` char(5),
-> PRIMARY KEY(username, date, time),
-> FOREIGN KEY(username) REFERENCES `login` (login_id)
-> );
한 사용자가 글을 여러 개 작성할 수 있으므로 Primary Key는 날짜와 시간까지 더해서 만들어주었다. (1분 안에 2개 이상의 글을 쓰는 사람이 없다고 가정) 그리고 회원 가입한 사용자의 아이디는 전부 login table의 login_id에 저장되므로 username을 login_id를 참조해서 Foreign Key로 설정해주었다.
데이터를 몇 개 넣어준 뒤 확인해보자.
username을 Foreign Key로 설정했기 때문에 login 테이블에 없는 ID, 즉 회원 가입하지 않은 사용자의 이름으로는 글을 작성할 수 없다.
이제 웹 코드를 짜보자.
board.php를 만들어준 후, 주소 검색에서 사용했던 코드를 가져와서 변수명들만 조금 바꿔준다.
<?php
function board(){
if(isset($_POST['board_search']) && $_POST['board_search'] != NULL){
$userID = $_POST['board_search'];
$conn = mysqli_connect('localhost', 'ID', 'PW', 'DBname');
$sql = "SELECT * FROM board where username like '$userID';";
$result = mysqli_query($conn, $sql);
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_array($result)){
echo "<tr><td>".$row['username']."</td><td>".$row['title']."</td><td>".$row['views']."</td><td>".$row['date']."</td></tr>";
}
} else{
echo "<script>alert('사용자가 존재하지 않습니다.')</script>";
}
mysqli_close($conn);
} else{
echo "<tr><td>검색해주세요.</td><td>0</td></tr>";
}
}
?>
결과도 잘 나오는 것을 확인할 수 있다.
user ID로 검색할 것인지, Title로 설정할 것인지 선택할 수 있는 기능도 추가해주어야 하고,
주소 검색과는 다르게 검색을 누르기 전에 Default로 최신순 / 인기순에 따라 정렬된 테이블을 보여주는 부분도 추가로 만들어야 한다.
'WEB HACKING > 웹 해킹[실습]' 카테고리의 다른 글
Php로 웹 개발하기 : 게시판(2) - Search (0) | 2021.11.09 |
---|---|
Burp Suite 설치 및 사용법(Ubuntu) (0) | 2021.11.06 |
Php로 웹 개발하기 : 주소 검색(2) (0) | 2021.10.31 |
Php로 웹 개발하기 : 주소 검색(1) (0) | 2021.10.29 |
Php로 웹 개발하기 : MySQL Trigger (0) | 2021.10.25 |
댓글