여분 필드를 활용하여 만든 게시판에 저장이 안됩니다

여분 필드를 활용하여 만든 게시판에 저장이 안됩니다

QA

여분 필드를 활용하여 만든 게시판에 저장이 안됩니다

본문

여분 필드를 활용하여 입력 폼을 만들었습니다

 

그런데 입력 폼에 내용을 채우면 저장이 안됩니다.

 

도와 주세요

이 질문에 댓글 쓰기 :

답변 2

입력 폼 데이터를 처리할 때,

여분 필드(extra field)에 저장하는 과정에서 데이터베이스 컬럼이 누락되었거나,

write_update.php 또는 관련 로직에서 입력값을 받아 처리하는 코드가 빠져 있을 가능성.

또한, SQL 실행 시 필드명이 일치하지 않거나

POST 데이터가 올바르게 전달되지 않았을 수도 있습니다.

입력 처리 로직을 점검하고, 실제 데이터가 올바르게 DB에 입력되는지 검증하는 것이 필요함.

 

*bbs/write_update.php에서 입력 처리 로직을 점검하고,

  실제 데이터가 올바르게 DB에 입력되는지 검증하는 것이 필요합니다.

 

*이름, 이메일, 연락처, 제목, 내용, 소속, 그리고 파일 업로드를 입력한 후 제출하면,

데이터가 bbs/write_update.php로 전송됩니다.

 - <form> 태그 안에 아래 코드를 추가

<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">

※ 구체적 위치 ===

<form name="fwrite" id="fwrite" action="http://inknews.co.kr/bbs/write_update.php" onsubmit="return fwrite_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off" style="width:100%"> 이 <form> 태그 바로 아래에

<input type="hidden" name="csrf_token" value="<?= htmlspecialchars(get_session('ss_token'), ENT_QUOTES, 'UTF-8') ?>"

이 코드 추가

1. POST 데이터가 write_update.php에 전달되는지 확인

  - write_update.php의 맨 앞에 다음 코드를 추가하여, 폼 데이터가 전송되는지 확인.

<?php

var_dump($_POST);

exit;

?>

2. g5_write_테이블명의 컬럼 확인

  - 데이터베이스에서 다음 SQL을 실행하여 wr_1, wr_2 등 여분 필드가 있는지 확인

DESC g5_write_테이블명;

  - 필드가 없으면 추가

ALTER TABLE g5_write_테이블명 ADD COLUMN wr_1 VARCHAR(255) NOT NULL;

ALTER TABLE g5_write_테이블명 ADD COLUMN wr_2 VARCHAR(255) NOT NULL;

ALTER TABLE g5_write_테이블명 ADD COLUMN wr_3 VARCHAR(255) NOT NULL;

ALTER TABLE g5_write_테이블명 ADD COLUMN wr_4 VARCHAR(255) NOT NULL;

ALTER TABLE g5_write_테이블명 ADD COLUMN wr_5 TEXT NOT NULL;

ALTER TABLE g5_write_테이블명 ADD COLUMN wr_6 VARCHAR(255) NOT NULL;

3. write_update.php에서 SQL 실행 여부 확인

  - SQL 실행 코드 바로 앞에 아래 코드를 추가하여 실제 실행되는 SQL을 확인

if (isset($sql) && $result) {
   echo "SQL 실행 성공: " . $sql;
} else {
   echo "SQL 실행 실패: " . mysqli_error($conn);
}
exit

4. write.php 또는 jebo/write 페이지를 로드하는 그누보드의 컨트롤러 파일 상단에 추가

<?php

if (!defined('_GNUBOARD_')) exit; // 보안 체크

 

// CSRF 토큰 설정 (세션에 저장)

if (!get_session('ss_token')) {

set_session('ss_token', bin2hex(random_bytes(32)));

}

?>

5. bbs/write_update.php 수정

<?php
if (!defined('_GNUBOARD_')) exit; // 보안 체크

if ($_SERVER["REQUEST_METHOD"] === "POST") {
    if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== get_session('ss_token')) {
        alert('CSRF 검증 실패: 잘못된 요청입니다.');
        exit;
    }

    // CSRF 토큰 1회성 사용 후 초기화 (선택 사항)
    set_session('ss_token', bin2hex(random_bytes(32)))

    // 이후 게시글 저장 로직 실행
}
?>

답변을 작성하시기 전에 로그인 해주세요.
전체 22
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT