세이박스

[그누보드] 회원가입시 자동등록방지 코드가 맞지 않습니다. 캡챠(kcaptcha) 에러 해결 방법

웹프로그램
어느날 갑자기 그누보드 및 배추빌드 사이트에 회원가입 또는 게시판에 자동등록방지 코드 부분이 오류가 생기는 경우가 발생했다면?
 
---------------------------
웹 페이지의 메시지
---------------------------
자동등록방지용 코드가 맞지 않습니다.
---------------------------
확인  
---------------------------
 
 
1차 kcaptcha 관련 파일들을 새로 업로드 한다.
/js/jquery.kcaptcha.js
/bbs/kcaptcha_session.php
/bbs/kcaptcha_result.php
재등록 ^^
 
2차 회원 가입 쪽에도 오류가 나면 해당 코드를 수정한다.
     if (typeof(f.wr_key) != 'undefined') {
        if (hex_md5(f.wr_key.value) != md5_norobot_key) {
            alert('자동등록방지용 코드가 맞지 않습니다.');
            f.wr_key.focus();
            return false;
        }
    }
 
if(!check_kcaptcha(f.wr_key)) {
 return false;
}
 
 

Warning: Cannot modify header information - headers already sent by 오류 해결 방법

웹프로그램
그누보드 및 제로보드 게시판 이용시 다음과 같은 오류 발생할 경우가 있다.

Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/bbs/_head.php:2)

이와같은 오류는 이미지 Header를 출력 했기 때문에 수정할 수 없다라고 합니다.
논리적 오류로써 header 함수가 호출되기 전에 공백또는 문자 등이 이미 사용자에게 열려 있다는 의미입니다.

즉, 오류 페이지와 연관된 모든 페이지들을 확인해서 헤드 및 세션 처리 이전에 출력된 문자나 공백이 없는지 체크 해서 제거 해주면 되겠지만, 소스가 워낙 복잡한 경우 찾기가 쉽지가 않죠.
이때 소스 맨 상단에 ob_start(); 함수를 선언해주면 PHP4이상의 경우 output buffering을 기능을 사용할 수 있어 더이상 Warning 메시지가 나타나지 않습니다.

이와 같은 처리 단점?은 모든 PHP 스크립트 처리를 메모리 버퍼에 담아두었다가 한꺼번에 출력하게 되므로 페이지를 보여주는데 늦어지는 느낌이 날수도 있으며 ob_start()를 중복 사용시 또다른 오류가 발생할 수도 있습니다.

그누보드에서 적용하기 적당한 위치는 /index.php 파일의 맨 상단에 적용 하시면 됩니다.

<?
ob_start();

define("_MW_INDEX_", TRUE); // index 파일
....



 ▶ 최신영화, 최신 미국드라마 무료 다운로드...

그누보드(배추빌드) 기반 전광판 만들었습니다.

웹프로그램

사용자 삽입 이미지


전광판 기능 입니다. 아직 초기작이라 디테일한 기능은 없습니다.
추후 요청시 기능을 반영하고자 합니다.
예를 들어 당일 게시글에 한해서만 노출하기라던지 또는 함수 함수 호출시 폭지정 등을 할 수 있도록 개선 할 예정 입니다.
일단 현재 버전에서는 latest.skin.php 파일에서 폭,높이 등을 수정 하셔야 합니다.

전광판 노출 옵션 설정 : /skin/latest/saybox.display/latest.skin.php
cont.width = 380; //폭수정
cont.height = 15; //높이수정
cont.scrollspeed = 20; //글자 스크롤 속도(20->0.02초)
cont.pausedelay = 3000; //글자 머무는 시간 (3000->3초)
cont.pausemouseover = true; //마우스 올렸을때 멈춤 기능

설치경로 : /skin/latest/saybox.display

latest 적용예 :
<?=캐시함수("saybox.display", "게시판", 노출갯수, 글자길이, 이미지유무, 갱신시간)?>

캐시함수는 아래 2가지 함수중 사용 :
- mw_latest_rand() : 랜덤으로 글 가져옴 (캐시 미적용)
- mw_latest() : 최근글 (캐시사용)

게시판 : 게시판 테이블명 입력

글자길이 : 지정한 길이 이상일 경우 "..." 처리 됩니다.

이미지유무 : 0 (고정, 이미지 사용하지 않으므로)

갱신시간 : 기본값 설정값 $mw[config][cf_index_cache] 또는 임의 시간 지정 (mw_latest() 함수 이용시만 적용됨)


세이박스 적용 예)
<?=mw_latest_rand("saybox.display", "display", 5, 50, 0, $mw[config][cf_index_cache])?>

적용 페이지 : http://www.saybox.co.kr
등록 게시글 : http://www.saybox.co.kr/bbs/board.php?bo_table=display

추가 기능 및 개선 사항에 대해선 이곳에 코멘트 남겨 주세요!
기능 개선해서 올려 드리겠습니다. ^^

그리고, 사이트 적용시 반드시 아래 코멘트에 적용할 곳 남겨 URL 남겨 주시기 바랍니다.
안그럼 미워 할겁니다. ^^ ㅋㅋ

[활용팁] 그누보드에 RSS 피드 활성화 하기

웹프로그램

사용자 삽입 이미지

RSS는 사이트에서 제공하는 자료를 손쉽게 회원에게 빠르게 전달하는 기능을 제공하고 있습니다.
요즘 티스토리와 같은 블로그에 접속해 보면 위 그림 처럼 브라우저의 RSS 피드가 활성화 되는것을 보실 수 있습니다.
보통 브라우저 우측 상단에 보시면 주황색 전파 표시 아이콘 입니다.
해당 피드 아이콘을 클릭하면 현재 페이지에서 제공해주는 RSS를 바로 볼 수가 있습니다.
특히 검색 엔진 로봇의 경우 해당 피드를 손쉽게 이용해서 자료를 참조 할 수 있어 방문자 유입에 필수라 해도 과언이 아닐 것입니다.

저역시 RSS 버튼이 웹사이트 상에 있는데 왜 브라우저에서 활성화가 안될까하고 고민후 티스토리 소스를 확인 해보니 역시 <link /> 테그가 추가 되어 있더군요.
즉, 해당 페이지의 RSS 피드는 <link href="" /> 에 있습니다. 라고 알려줘야 한다는 것입니다.

그누보드(배추빌드)의 경우 해당 소스가 없을 것입니다.
아래와 같이 적용 하시면 게시판인 경우 테그가 적용 되도록 했습니다.
저의 경우 /head.sub.php 파일에 <head></head> 테그 안에 적용 해 놨습니다.

<? if($bo_table!="") { ?>
<link rel="alternate" type="application/rss+xml" title="세이박스 - <?=$board['bo_subject']?>" href="http://www.saybox.co.kr/bbs/rss.php?bo_table=<?=$bo_table?>" />
<? } ?>


저의 경우 모든 게시판이 RSS 허용 되어 있어서 위와 같이 간단하게 처리 했지만, 만약 RSS 허용 하지 않은 게시판이 있다면 RSS허용 유무 조건을 추가 하시던지 RSS 적용한 게시판에 한해서만 나타 나도록 적용하셔야 합니다.

그럼, 유용한 정보가 되시길 바랍니다.

그누보드에서 일반 블로그 처럼 메타테그 적극 활용하기

웹프로그램
홈페이지 title 및 메타태그는 방문자 유입을 위한 가장 기본적인 기능이다.

검색 엔진(로봇)의 경우 홈페이지의 title 또는 메타 태그 내용을 기반으로 검색어를 생성 하므로 게시판 내용의 경우 제목영역이 title이나 메타태그로 지정 되면 매우 효과 적이다.

이러한 특성을 잘 살리고 있는것이 블로그 들이다.

티스토리의 경우 역시 게시글의 제목을 <title>제목</title> 형식으로 이용해서 검색 노출에 매우 좋은 효과를 보이고 있다.

하지만, 그누보드의 경우 "사이이트명 > 게시판 제목 ..." 형태로 표시되어서 검색 효과를 보지 못하게 됩니다.

따라서, /head.sub.php 에서 "//title 적용 부분" 주석 처리 된 부분을 다음과 같이 수정하시면 각 페이지 환경에 맞게 출력이 됩니다.

//title 적용 부분
if($write['wr_subject']) { //게시판 본문 적용
 $g4['title'] = $write['wr_subject']." - ";
} else if($board['bo_subject']) { //게시판 리스트 적용
 $g4['title'] = $board['bo_subject']." - ";
}
//모든페이지 적용
$g4['title'] .= $config['cf_title']." - 개발자 커뮤니티 포탈";