닉네임에 공백글자(ex. 공백 닉네임)을 허용하고 싶습니다.

닉네임에 공백글자(ex. 공백 닉네임)을 허용하고 싶습니다.

QA

닉네임에 공백글자(ex. 공백 닉네임)을 허용하고 싶습니다.

본문

질문답변을 검색에서 명쾌한 답변을 찾지 못해서 질문 올립니다.


닉네임 :  공백 허용   처럼 글자 중간에 공백을 허용하고자 합니다. 


관련사항을 검색해보니 아래의 내용에서 어딘가를 수정하면 될것으로 판단되는데,

가능한 시나리오는 해봤는데 모두 실패했습니다. 도움의 손길이 필요합니다.


1. 그누보드5 / bbs / ajax.mb_nick.php 내용중

if ($msg = empty_mb_nick($mb_nick)) die($msg);

if ($msg = valid_mb_nick($mb_nick)) die($msg);

if ($msg = count_mb_nick($mb_nick)) die($msg);

if ($msg = exist_mb_nick($mb_nick, $mb_id)) die($msg);

if ($msg = reserve_mb_nick($mb_nick)) die($msg);


2. 그누보드5 / bbs / register_form_update.php 내용중

    if ($msg = empty_mb_nick($mb_nick))     alert($msg, "", true, true); 

    if ($msg = empty_mb_email($mb_email))   alert($msg, "", true, true);

    if ($msg = reserve_mb_id($mb_id))       alert($msg, "", true, true);

    if ($msg = reserve_mb_nick($mb_nick))   alert($msg, "", true, true);

    // 이름에 한글명 체크를 하지 않는다.

    if ($msg = valid_mb_name($mb_name))     alert($msg, "", true, true);

    if ($msg = valid_mb_nick($mb_nick))     alert($msg, "", true, true);


3. 그누보드5 / lib / register.lib.php 

function valid_mb_nick($reg_mb_nick)

{

    if (!check_string($reg_mb_nick, G5_HANGUL + G5_ALPHABETIC + G5_NUMERIC + G5_SPECIAL))

        return "닉네임은 공백없이 한글, 영문, 숫자만 입력 가능합니다.";

    else

        return "";

}


이 질문에 댓글 쓰기 :

답변 4

check_string 함수에서 공백이 걸리는군요. 수정해주셔야합니다

lib/common.lib.php에서 

check_string 검색하셔서

주석에 공백이라고 되어있는부분 소스를 주석처리해주세요.

이렇게 2가지 처리를 했는데,  닉네임 : 공백이 없어야 합니다.  라고 뜨네요.
제가 어떤 처리가 부족한 걸까요?

그누보드5 / lib / common.lib.php 내용에서
function check_string($str, $options)
{
...
}

를 복사해서 아래와 같이 추가

function check_string_nick($str, $options)
{
    global $g5;

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

        // 한글
        if ($oc >= 0xA0 && $oc <= 0xFF) {
            if ($options & G5_HANGUL) {
                $s .= $c . $str[$i+1] . $str[$i+2];
            }
            $i+=2;
        }
        // 숫자
        else if ($oc >= 0x30 && $oc <= 0x39) {
            if ($options & G5_NUMERIC) {
                $s .= $c;
            }
        }
        // 영대문자
        else if ($oc >= 0x41 && $oc <= 0x5A) {
            if (($options & G5_ALPHABETIC) || ($options & G5_ALPHAUPPER)) {
                $s .= $c;
            }
        }
        // 영소문자
        else if ($oc >= 0x61 && $oc <= 0x7A) {
            if (($options & G5_ALPHABETIC) || ($options & G5_ALPHALOWER)) {
                $s .= $c;
            }
        }
        // 공백
        //else if ($oc == 0x20) {
        //    if ($options & G5_SPACE) {
        //        $s .= $c;
        //    }
        //}
        else {
            if ($options & G5_SPECIAL) {
                $s .= $c;
            }
        }
    }

    // 넘어온 값과 비교하여 같으면 참, 틀리면 거짓
    return ($str == $s);
}


그누보드5 / lib / regiseter.lib.php 내용에서
function valid_mb_nick($reg_mb_nick)
{
    if (!check_string(...

를 아래와 같이 수정

function valid_mb_nick($reg_mb_nick)
{
    if (!check_string_nick(...

js/wrest.js


function wrestNospace(fld)
{
    var pattern = /(\s)/g; // \s 공백 문자

    if (pattern.test(fld.value)) {
        if (wrestFld == null) {
            wrestMsg = wrestItemname(fld) + " : 공백이 없어야 합니다.\n";
            wrestFld = fld;
        }
    }
}
...
// submit 할 때 속성을 검사한다.
function wrestSubmit()
{
    wrestMsg = "";
    wrestFld = null;
    ...

...
// 초기에 onsubmit을 가로채도록 한다.
function wrestInitialized()
{

    for (var i = 0; i < document.forms.length; i++) {
        // onsubmit 이벤트가 있다면 저장해 놓는다.
        ...

...
// 폼필드 자동검사
$(document).ready(function(){
    // onload
    wrestInitialized();
});

꼼수적 의견


' ' 을 ' ' 로 변환후 저장

' ' 은 spacebar

' '는 ㄱ,[한자],1 


보기에만 공백이면 될때 공백 1개짜리에서만 가능하도록 제한하면 되지 않을까요

답변을 작성하시기 전에 로그인 해주세요.
전체 756
QA 내용 검색

회원로그인

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