별명을 바꾸고 중복확인을 누르면 에러메세지가 뜹니다 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

별명을 바꾸고 중복확인을 누르면 에러메세지가 뜹니다 정보

별명을 바꾸고 중복확인을 누르면 에러메세지가 뜹니다

본문

별명을 바꾸고 중복확인을 누르면 다음과 같은 에러가 뜨며 다음 화면으로 넘어가지 않는군요
 
Fatal error: Call to undefined function: check_string() in /home/omg58/public_html/bbs/member_nick_check.php on line 10
 
member_nick_check.php  소스입니다.
 
<?
include_once("./_common.php");
$g4[title] = "별명 중복확인";
include_once("$g4[path]/head.sub.php");
$mb_nick = trim($mb_nick);
// 별명은 한글, 영문, 숫자만 가능
if (!check_string($mb_nick, _G4_HANGUL_ + _G4_ALPHABETIC_ + _G4_NUMERIC_)) {
    echo "<script language='JavaScript'>";
    echo "alert(\"별명은 공백없이 한글, 영문, 숫자만 입력 가능합니다.\");";
    echo "parent.document.getElementById('mb_nick_enabled').value = '';";
    echo "window.close();";
    echo "</script>";
    exit;
}
$mb = sql_fetch(" select mb_nick from $g4[member_table] where mb_nick = '$mb_nick' ");
if ($mb[mb_nick]) {
    echo "<script language='JavaScript'>";
    echo "alert(\"'{$mb_nick}'은(는) 이미 다른분께서 사용하고 있는 별명이므로 사용하실 수 없습니다.\");";
    echo "parent.document.getElementById('mb_nick_enabled').value = -1;";
    echo "window.close();";
    echo "</script>";
} else {
    if (preg_match("/[\,]?{$mb_nick}/i", $config[cf_prohibit_id])) {
        echo "<script language='JavaScript'>";
        echo "alert(\"'{$mb_nick}'은(는) 예약어로 사용하실 수 없는 별명입니다.\");";
        echo "parent.document.getElementById('mb_nick_enabled').value = -2;";
        echo "window.close();";
        echo "</script>";
    } else {
        echo "<script language='JavaScript'>";
        echo "alert(\"'{$mb_nick}'은(는) 별명으로 사용할 수 있습니다.\");";
        echo "parent.document.getElementById('mb_nick_enabled').value = 1;";
        echo "window.close();";
        echo "</script>";
    }
}
include_once("$g4[path]/tail.sub.php");
?>

댓글 전체

check_string() 라는 함수를 못찾는것 같습니다.

lib/common.lib.php 에 아래의 함수가 들어 있는지 체크해 보세요.

// 문자열이 한글, 영문, 숫자, 특수문자로 구성되어 있는지 검사
function check_string($str, $options)
{
    global $g4;

    $s = '';
    for($i=0;$i<strlen($str);$i++) {
        $c = $str[$i];
        $oc = ord($c);

        // 한글
        if ($oc >= 0xA0 && $oc <= 0xFF) {
            if (strtoupper($g4['charset']) == 'UTF-8') {
                if ($options & _G4_HANGUL_) {
                    $s .= $c . $str[$i+1] . $str[$i+2];
                }
                $i+=2;
            } else {
                // 한글은 2바이트 이므로 문자하나를 건너뜀
                $i++;
                if ($options & _G4_HANGUL_) {
                    $s .= $c . $str[$i];
                }
            }
        }
        // 숫자
        else if ($oc >= 0x30 && $oc <= 0x39) {
            if ($options & _G4_NUMERIC_) {
                $s .= $c;
            }
        }
        // 영대문자
        else if ($oc >= 0x41 && $oc <= 0x5A) {
            if (($options & _G4_ALPHABETIC_) || ($options & _G4_ALPHAUPPER_)) {
                $s .= $c;
            }
        }
        // 영소문자
        else if ($oc >= 0x61 && $oc <= 0x7A) {
            if (($options & _G4_ALPHABETIC_) || ($options & _G4_ALPHALOWER_)) {
                $s .= $c;
            }
        }
        // 공백
        else if ($oc >= 0x20) {
            if ($options & _G4_SPACE_) {
                $s .= $c;
            }
        }
        else {
            if ($options & _G4_SPECIAL_) {
                $s .= $c;
            }
        }
    }

    // 넘어온 값과 비교하여 같으면 참, 틀리면 거짓
    return ($str == $s);
}
혹시 업그레이드를 하면서 그누보드 원본파일의 버전이 서로다른게 업로드가 되어 있지 않나요?

그러니깐 lib/common.lib.php 와 bbs/member_nick_check.php 의 버전이 서로다른 경우를 말합니다.
먼저 업그레이드를 한 번 했는데 무엇이 어떻게 업그레이드 되었는지 모르겠어요
여기서 자동업그레이드를 이용했었거든요.(4.06 -> 4.21)
4.06원본을 덮어 씌우니까 빈화면으로 뜨네요( lib/common.lib.php 와 bbs/member_nick_check.php )
이전에 자동 업그레이드를 하시면서 뭔가 꼬인 경우인듯 보입니다.
자동 업그레이드를 하지마시고 수동으로 업그레이드를 새로 하셔야 할듯 보입니다.
근래 배포중인 버전에는 lib/constant.php 라는 파일에 아래의 상수가 선언이 되어있고
lib/common.lib.php 에서 check_string() 라는 함수를 사용시 끌고와서 사용하도록 되어 있습니다.

<?
// 상수 정의

// 입력값 검사 상수
define('_G4_ALPHAUPPER_', 1); // 영대문자
define('_G4_ALPHALOWER_', 2); // 영소문자
define('_G4_ALPHABETIC_', 4); // 영대,소문자
define('_G4_NUMERIC_', 8); // 숫자
define('_G4_HANGUL_', 16); // 한글
define('_G4_SPACE_', 32); // 공백
define('_G4_SPECIAL_', 64); // 특수문자
?>
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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