2024. 4. 10. 10:02ㆍ복습/인터넷 보안 실습
DB에 게시판 테이블 만들어주기
회원 정보가 담긴 테이블이 있는 DB에
게시판 정보를 담을 테이블을 추가로 생성해준다.

코드는 아래와 같다.
create table board
(
bidx int primary key identity(1,1) not null,
bno int not null, --글 번호
name varchar(30) not null, -- 글쓴이 아이디
title varchar(50) not null, --글 제목
bcontent text not null, -- text는 2000자까지 작성 가능, 글 내용
pwd varchar(10) not null, --게시글 패스워드
email varchar(50) not null,
wdate datetime default (getdate()), -- 작성 시간 write date
readno int not null -- 글 조회수
)
생성이 완료되었으면, select 구문을 통해 확인해준다.

결과탭에 bidx 부터 바르게 생성된 것을 확인할 수 있다.
게시글 입력 양식 만들기 (write.asp)
글쓰기 창은 작성자를 다른 사람으로 변경할 수 없도록하고,
이메일은 처음엔 본인의 이메일이 뜨지만, 수정 가능하도록 한다.
이를 구현하기 위한 코드의 일부분이다.
<TABLE style="width:500px;height:400px;">
<TR><TH><FONT color="white">UserID</FONT></TH>
<TD><%=rs("userid")%></TD></TR>
<TR><TH><FONT color="white">Email</FONT></TH>
<TD><INPUT type="text" name="email" value="<%=rs("email")%>"></TD></TR>
UserID 부분에서는 input 태그 없이
<%=rs("userid")%> 만을 넣어 고정시키고
Email 부분에서는 input 태그와
<%=rs("email")%>를 같이 넣어 수정 가능하게 해준다.
그리고 DB와 연동 시키는 구문, 접근 제어 구문등을 적어주고,
HTML의 Table 태그로 대략적인 형태를 잡아준 뒤에
http://localhost/MySite/write.asp 다음 링크로 접속하면

이런 식으로 나타나는 걸 확인할 수 있다.
만약 접근 제어로 인해 오류가 생긴다면,
http://localhost/MySite/login.asp 에서 로그인을 해준뒤 접속하면 된다.
게시글 DB로 보내기 (write_go.asp)
지금은 write.asp 페이지에서 작성한 정보를
DB로 가져가는 역할을 하는 코드가 없어서
글을 쓰려고 해도 에러가 발생할 것이다.
이전에 작성했던 mem_edit_reg.asp 역시
mem_edit.asp에서 수정한 회원 정보를
DB로 옮겨주는 역할을 했었는데,
이번에 작성할 write_go.asp 역시 같은 동작을 한다.
write_go.asp를 작성해보자.
name = session("id")
email = request.form("email")
title = request.form("title")
bcontent = request.form("content")
pwd = request.form("pwd")
우선, request.form 을 통해 write.asp에서 작성했던 정보를
다른 변수에 저장해준다.
bcontent = request.form("content") 에서
content는 write.asp 에서 붙여준 이름으로,
write.asp 에서 content에 어떤 내용을 작성했다면,
request.form("content") 는 그 내용을 불러온 것이다.
참고 : write.asp 의 코드 일부
<TEXTAREA name="content" rows="10" cols="60"></TEXTAREA>
또한, bcontent는 그 내용을 저장하는 새로운 변수이다.
이제 write_go.asp를 마저 작성해보자.
sql ="select max(bno) as maxbno from board"
set rs = dbconn.execute(sql)
if isNull(rs("maxbno")) then
bno = 1
else
bno = rs("maxbno")+1
end if
sql ="Insert into board values ("
sql = sql &bno&",'"
sql = sql &name&"','"
sql = sql &title&"','"
sql = sql &bcontent&"','"
sql = sql &pwd&"','"
sql = sql &email&"', default, 0)"
dbconn.execute(sql)
response.redirect "default.asp"
end if%>
이는 bno (글번호)의 최대값을 DB에서 검색한 뒤,
최대 글번호가 없다면 현재 글 번호를 1로,
최대 글번호가 있다면 그 값에 1을 더한 값을 현재 글 번호로 정해주고,
글 번호와 다른 정보들을 DB로 옮겨주는 역할을 해준다.
이제 http://localhost/MySite/write.asp 에서 글을 작성한 뒤,

DB에서 확인해보면 글이 올라온 것을 확인할 수 있다.
다음 글에서는 게시글을 사이트에서도 확인할 수 있도록
초기화면을 수정해주고, 게시글을 읽으면 조회수가 올라가는 코드를 작성할 것이다.
'복습 > 인터넷 보안 실습' 카테고리의 다른 글
[웹 해킹] SQL 인젝션 - 로그인 인증우회 (0) | 2024.04.28 |
---|---|
[회원가입 사이트 만들기] 8. 게시판 글 수정/삭제 (0) | 2024.04.11 |
[회원가입 사이트 만들기] 6. 회원 정보 수정/ 탈퇴 (0) | 2024.04.03 |
[회원가입 사이트 만들기] 5. 로그아웃 페이지 (0) | 2024.04.02 |
[회원가입 사이트 만들기] 4. 디폴트 페이지 (0) | 2024.03.29 |