별명을 바꾸고 중복확인을 누르면 에러메세지가 뜹니다 정보
별명을 바꾸고 중복확인을 누르면 에러메세지가 뜹니다본문
별명을 바꾸고 중복확인을 누르면 다음과 같은 에러가 뜨며 다음 화면으로 넘어가지 않는군요
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");
include_once("./_common.php");
$g4[title] = "별명 중복확인";
include_once("$g4[path]/head.sub.php");
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;
}
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>";
}
}
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 에 아래의 함수가 들어 있는지 체크해 보세요.
// 문자열이 한글, 영문, 숫자, 특수문자로 구성되어 있는지 검사
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 의 버전이 서로다른 경우를 말합니다.
그러니깐 lib/common.lib.php 와 bbs/member_nick_check.php 의 버전이 서로다른 경우를 말합니다.
먼저 업그레이드를 한 번 했는데 무엇이 어떻게 업그레이드 되었는지 모르겠어요
여기서 자동업그레이드를 이용했었거든요.(4.06 -> 4.21)
4.06원본을 덮어 씌우니까 빈화면으로 뜨네요( 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/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로 업로드 했는데도 마찬가지네요.
아! 힘들어......
아! 힘들어......