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

별명을 바꾸고 중복확인을 누르면 다음과 같은 에러가 뜨며 다음 화면으로 넘어가지 않는군요
 
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");
?>
|

댓글 8개

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); // 특수문자
?>
lib/constant.php 와 common.lib.php , member_nick_check.php를 4.21.02로 업로드 했는데도 마찬가지네요.

아! 힘들어......
댓글을 작성하시려면 로그인이 필요합니다. 로그인

그누4 질문답변

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

+
제목 글쓴이 날짜 조회
18년 전 조회 1,606
18년 전 조회 1,430
18년 전 조회 1,534
18년 전 조회 1,440
18년 전 조회 1,513
18년 전 조회 1,478
18년 전 조회 1,535
18년 전 조회 1,554
18년 전 조회 1,461
18년 전 조회 1,882
18년 전 조회 1,390
18년 전 조회 1,517
18년 전 조회 1,596
18년 전 조회 1,533
18년 전 조회 1,511
18년 전 조회 1,222
18년 전 조회 1,524
18년 전 조회 1,463
18년 전 조회 2,517
18년 전 조회 1,515
🐛 버그신고