글 이동시 쪽지 보내기 팁에 질문이 있습니다.

글 이동시 쪽지 보내기 팁에 질문이 있습니다.

QA

글 이동시 쪽지 보내기 팁에 질문이 있습니다.

본문

https://gnustudy.com/bbs/board.php?bo_table=gnu_tip&wr_id=341&sfl=wr_subject%7C%7Cwr_content&stx=%EC%9D%B4%EB%8F%99&sop=and

 

위 그누 스터디 사이트에서 보고 팁을 적용해 보았는데 글 이동을 하면 500 에러가 떠버리네요

 

다른거라고는 user.config.php 파일이 없어서 새로 만든거랑 새로 만들다 보니 <?php 가 없어서 제일 위에 

 

추가해준거 밖에 없거든요. 그냥 파일을 만들어서 exetend 폴더에 올리면 되는거 아닌가요?ㅠㅠ

 

 

extend/user.config.php 파일에 아래 내용 전체 추가

 

 

add_event('bbs_move_copy', 'move_memo_insert', 10, 3);

function move_memo_insert($row2, $move_bo_table, $insert_id, $next_wr_num, $sw)
{
    global $g5, $config, $board, $sw;

    $sql = "select * from {$g5['board_table']} where bo_table = '".sql_real_escape_string($move_bo_table)."' ";
    $move_board = sql_fetch($sql);

    // 코멘트가 아니라면
    if (!$row2['wr_is_comment'] && $sw == 'move')
    {
        $tmp_row = sql_fetch(" select max(me_id) as max_me_id from {$g5['memo_table']} ");
        $me_id = $tmp_row['max_me_id'] + 1;

        $memo_content = '['.$row2['wr_subject'].']\n이 게시물은 관리자님에 의해 '.G5_TIME_YMDHIS.' '.$board['bo_subject'].'에서 '.$move_board['bo_subject'].' 게시판으로 이동됨';

        $sql = " insert into {$g5['memo_table']} set me_id='$me_id', me_recv_mb_id = '{$row2['mb_id']}', me_send_mb_id = '{$config['cf_admin']}', me_send_datetime='".G5_TIME_YMDHIS."', me_memo='{$memo_content}'  ";
        sql_query($sql);

        $sql = " update {$g5['member_table']} set mb_memo_call = '{$config['cf_admin']}', mb_memo_cnt = '".get_memo_not_read($row2['mb_id'])."' where mb_id = '{$row2['mb_id']}' ";
        sql_query($sql);
    }
}

이 질문에 댓글 쓰기 :

답변 1

제일 맨위에다가 아래 소스코드 넣어보세요 그러면 에러 내용이 나와서 그걸 다시 답장에 올려주세요

error_reporting( E_ALL );
ini_set( "display_errors", 1 );

 

아 이렇게 에러를 볼수 있는거군요. 이렇게 하니까 사이트의 모든 에러를 보게 되네요. 이 자체가 엄청 유용한 팁이네요. 그리고 에러는 아래처럼 납니다

Fatal error: Uncaught ArgumentCountError: Too few arguments to function move_memo_insert(),

3 passed in /home/public_html/lib/Hook/hook.extends.class.php on line 23 and exactly 5 expected

참고로 php 버전이 8.2 인데 이거 때문일까요?


add_event('bbs_move_copy', 'move_memo_insert', 10, 3); 이거를
add_event('bbs_move_copy', 'move_memo_insert', 10, 5); 로 바꿔 보라는 말이 있어서 바꿔 보니까 이동은 잘 되고 쪽지도 발송이 되는데 받는 사람의 아이디 와 닉네임 이 두개가 업데이트가 없이 메모 테이블에 업데이트가 되네요
보내는 사람은 관리자로 잘 찍혀 있구요..ㅠㅠ 이렇게 고치는게 아닌가 봐요

아! 그러면 아이디와 닉넴이 빠진거면 글로벌변수에 global $config; 추가해보세요

그리고 고유번호 같은 경우는    $tmp_row = sql_fetch(" select max(me_id) as max_me_id from {$g5['memo_table']} ");
        $me_id = $tmp_row['max_me_id'] + 1; 이거 빼도 괜찮아요

1씩 증가하는거니까 빼고 아래 쿼리도 수정해주세요  me_id='$me_id', 이것만 제거해주세요 (아래꺼 그대로 적용해도되요)

  $sql = " insert into {$g5['memo_table']} set me_recv_mb_id = '{$row2['mb_id']}', me_send_mb_id = '{$config['cf_admin']}', me_send_datetime='".G5_TIME_YMDHIS."', me_memo='{$memo_content}'  ";
        sql_query($sql);

말씀 해주신대로 적용해 봤는데 같은 증상이네요.. 보낸 사람은 잘 들어가는데 받는 사람이 null 값이 나옵니다. 아이디와 닉네임 둘다요.
Warning: Trying to access array offset on value of type null

제가 실력이 모자라서 잘 모르겠습니다. 팁 보고 해보려고 했는데 그 사이에 메모의 구조가 좀 달라져서 에러가 나는거 같기도 합니다. 전에는 메모 디비에 한개 메모에 하나의 디비만 찍혔는데 요즘은 2개의 디비가 찍히더라구요. 보내는 사람, 받는사람, 그리고 에러 리포팅 해주는거 참 유용하네요. 안보이던 에러들 잡고 있습니다. 감사합니다.

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

회원로그인

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