별명을 바꾸고 중복확인을 누르면 에러메세지가 뜹니다
별명을 바꾸고 중복확인을 누르면 다음과 같은 에러가 뜨며 다음 화면으로 넘어가지 않는군요
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");
?>
?>
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 8개
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/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); // 특수문자
?>
아! 힘들어......