동영상 강좌는 유튜브 채널 '웹학교'를 이용하시기 바랍니다.
글쓰기를 처리하는 화일입니다.
보안과 관련하여 아주 중요한 화일입니다. 불법적인 글등록을 차단하기 위해 확인하는 과정이 많습니다.
위치 : /bbs
1. 네이버신디케이션라이브러리 추가
네이버 신디케이션를 적용하고 있다면 새글이 등록될 때 네이버로 ping url을 전달합니다.
include_once(G5_LIB_PATH.'/naver_syndi.lib.php');
2. 캡차라이브러 추가
넘겨받은 캡차가 이상이 없는지 확인하기 위해 사용합니다.
3. 넘겨받은 항목에 대하여 다양한 체크
브라우저단에서는 스크립트로 한번 검토하고, 서버단에서 다시 넘겨받은 값이 정상인지 확인합니다.
if ($wr_subject == '') {
$msg[] = '제목을 입력하세요.';
}
.....
.....
.....
4. 새 글 또는 답변일 경우
$sql = " insert into $write_table
set wr_num = '$wr_num',
wr_reply = '$wr_reply',
wr_comment = 0,
ca_name = '$ca_name',
wr_option = '$html,$secret,$mail',
wr_subject = '$wr_subject',
wr_content = '$wr_content',
wr_link1 = '$wr_link1',
wr_link2 = '$wr_link2',
wr_link1_hit = 0,
wr_link2_hit = 0,
wr_hit = 0,
wr_good = 0,
wr_nogood = 0,
mb_id = '{$member['mb_id']}',
wr_password = '$wr_password',
wr_name = '$wr_name',
wr_email = '$wr_email',
wr_homepage = '$wr_homepage',
wr_datetime = '".G5_TIME_YMDHIS."',
wr_last = '".G5_TIME_YMDHIS."',
wr_ip = '{$_SERVER['REMOTE_ADDR']}',
wr_1 = '$wr_1',
wr_2 = '$wr_2',
wr_3 = '$wr_3',
wr_4 = '$wr_4',
wr_5 = '$wr_5',
wr_6 = '$wr_6',
wr_7 = '$wr_7',
wr_8 = '$wr_8',
wr_9 = '$wr_9',
wr_10 = '$wr_10' ";
sql_query($sql);
5. 수정인 경우
$sql = " update {$write_table}
set ca_name = '{$ca_name}',
wr_option = '{$html},{$secret},{$mail}',
wr_subject = '{$wr_subject}',
wr_content = '{$wr_content}',
wr_link1 = '{$wr_link1}',
wr_link2 = '{$wr_link2}',
mb_id = '{$mb_id}',
wr_name = '{$wr_name}',
wr_email = '{$wr_email}',
wr_homepage = '{$wr_homepage}',
wr_1 = '{$wr_1}',
wr_2 = '{$wr_2}',
wr_3 = '{$wr_3}',
wr_4 = '{$wr_4}',
wr_5 = '{$wr_5}',
wr_6 = '{$wr_6}',
wr_7 = '{$wr_7}',
wr_8 = '{$wr_8}',
wr_9 = '{$wr_9}',
wr_10= '{$wr_10}'
{$sql_ip}
{$sql_password}
where wr_id = '{$wr['wr_id']}' ";
sql_query($sql);
6. 첨부화일 처리 (라인 423 ~ 620)
// 파일개수 체크
$file_count = 0;
$upload_count = count($_FILES['bf_file']['name']);
for ($i=0; $i<$upload_count; $i++) {
if($_FILES['bf_file']['name'][$i] && is_uploaded_file($_FILES['bf_file']['tmp_name'][$i]))
$file_count++;
}
-----
-----
-----
// 파일의 개수를 게시물에 업데이트 한다.
$row = sql_fetch(" select count(*) as cnt from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' ");
sql_query(" update {$write_table} set wr_file = '{$row['cnt']}' where wr_id = '{$wr_id}' ");
7. 메일발송(관리자, 글쓴이, 그룹관리자, 게시판관리자 등)
// 메일발송 사용 (수정글은 발송하지 않음)
if (!($w == 'u' || $w == 'cu') && $config['cf_email_use'] && $board['bo_use_email']) {
// 관리자의 정보를 얻고
$super_admin = get_admin('super');
$group_admin = get_admin('group');
$board_admin = get_admin('board');
-----
-----
-----
8. 사용자 업데이트 코드 반영
@include_once($board_skin_path.'/write_update.skin.php');
등록된 댓글이 없습니다.