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

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

QA

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

답변 2

본문

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

 

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

 

도와 주세요

이 질문에 댓글 쓰기 :

답변 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)))

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

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 15
© SIRSOFT
현재 페이지 제일 처음으로