테스트 사이트 - 개발 중인 베타 버전입니다

아이디 => 이메일 형식으로 회원가입 및 로그인

1. lib/common.lib.php
파일에 함수 생성
 

function get_email($mb_id, $fields='*', $is_cache=false){

    global $g5;

    

    // $mb_id = preg_replace("/[^0-9a-z_]+/i", "", $mb_id);

 

    static $cache = array();

 

    $key = md5($fields);

 

    if( $is_cache && isset($cache[$mb_id]) && isset($cache[$mb_id][$key]) ){

        return $cache[$mb_id][$key];

    }

 

    $sql = " select $fields from {$g5['member_table']} where mb_id = TRIM('$mb_id') ";

 

    $cache[$mb_id][$key] = run_replace('get_member', sql_fetch($sql), $mb_id, $fields, $is_cache);

 

    return $cache[$mb_id][$key];

}

 


2.ajax.mb_id.php파일

if ($msg = valid_mb_id($mb_id))     die($msg);


 G5_LIB_PATH.'/register.lib.php' => valid_mb_id()함수 커스터마이징 
 

function valid_mb_id($reg_mb_id)

{

    

    if (!preg_match("/([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/", $reg_mb_id))

        return "E-mail 주소가 형식에 맞지 않습니다.";

    else

        return "";

}


3. jquery.register_form.js 파일 

reg_mb_id_check 함수 data 부분 아래와 같이 변경
 

   data: {

            "reg_mb_id": $("#reg_mb_id").val()

        },



4.login.check.php 파일
 

// $mb = get_member($mb_id);

$mb = get_email($mb_id);

다음과 같이 변경

5. member_form.php 파일

 // $mb = get_member($mb_id);

    $mb = get_email($mb_id);

다음과 같이 변경
6. root/ common.php
 

    // $member = get_member($_SESSION['ss_mb_id']);

    $member = get_email($_SESSION['ss_mb_id']);

다음과 같이 변경







update `g5_config` set `cf_admin` = 'admin@test.com' where `cf_admin` = "admin"; 

관리자도 메일 형식으로 바꿔주세요


*추가 

데이터 베이스에 mb_id 부분들은 꼭 char 255로 해주세요. 
회원디비, 게시판디비등 mb_id가 들어가는 부분들은 전부 (20)으로  되어있어서
아이디 짤려서 들어갑니다!
 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 30개

좋은팁입니다~
감사합니다.
^.,^ 감사합니다
저는 사용하고 있지만,
이것 정말 추천 합니다.
^.,^ 감사합니다2
멋있어요! ㅜㅜ
이쁜사이트 만드세요 ~
좋은 팁이네요!!
안녕하세요! 작성해주신 팁이 정말 유용합니다.
그런데, 위 코드를 사용하고 db에 mb_id데이터 형식을 varchar(20)으로 그대로 두어도 될까요?
이메일의 경우 varchar(20)을 초과할까봐서요. 프론트에서 max 20으로 막는 방법도 있겠지만, 이메일 주소에 형식을 제외한 제한을 두는건 이상하지 않을까 하여 여쭤봅니다!
@ㄱ소진 안녕하세요 소중한 의견 감사합니다. 답변이 늦었네요
g5_member 의 데이터 베이스 기본을 보면, mb_email의 데이터 형식은 varchar(255)로 되어 있습니다.
말씀주신데로 varchar(20)을 그대로 두는 것 보다 (255)로 변경하는게 좋을 것 같습니다 ^.,^
@koreanleo 넵 답변 감사합니다^^ 덕분에 잘 적용했습니다.
@영앤코딩 고생하셨습니다 ^.,^
와우! 감사합니다!!! 적용 잘되네요!!^^ 관리자페이지 회원관리부분에서 정보수정하는 페이지들의 get_member부분도 모두 수정해야 할것 같아요~!!
@위드컴 저도 최근에 다시 사용했는데
디비에 mb_id 부분은에 char 를 255 로 전부 바꿔줘야해요!
이거 안바꾸면 아이디 짤려서 들어가요~
안녕하세요!! 혹시 get_email 함수를 추가하여 get_member를 get_email로 변경하는것 말고
get_member 함수 안에 내용을 get_email로 바꿔 사용하면 안되나요??
@귿귿 연관되어 있는 파일들과 관계성을 다 맞춰주시면 가능할 것 같습니다 :)
이메일 인증을 사용하는데 아이디를 이메일로 하면 바로 인증메일이 가는지요?
감사합니다
@풍운 아마 해당부분은 코드를 조금 수정해야할 것 같습니다.
@koreanleo 아 그렇군요...감사합니다
전부 적용을 했는데요. 이메일 유효성 검사해서 계속 형식이 아니라고 나옵니다.
$reg_mb_id 찍어보면 @ 대신에 %40 이 뜨는데 왜 그런 걸까요?
@광나 20년도에 사용했던 거라 버전이 바뀌었을 수도 있고...
그런데 이메일 유효성 검사면 해당 함수만 조금 조정하면 해결될 것 같네요

(DB내) 모든 테이블에서 mb_id 컬럼을 찾는 쿼리입니다. 참고 바랍니다.
SELECT sc.TABLE_SCHEMA, sc.TABLE_NAME, sc.COLUMN_NAME, sc.COLUMN_TYPE
FROM INFORMATION_SCHEMA.COLUMNS AS sc
WHERE COLUMN_NAME='mb_id'

@나눔앤 감사합니다 :)

좋은팁입니다~
감사합니다.

@ㅐ늑대ㅐ 도움이되셨다니 다행이네요 :)

좋은팁이네요~감사합니다. 경로가 바뀌었네요!

update `g5_config` set `cf_admin` = 'admin@test.com' where `cf_admin` = "admin"; 

이 부분은 조금 더 알려주실 수 있을까요? 초보라서 어디서 수정하는 것인지 좀 알고싶습니다!

+ 최대한 따라해봤는데, 아래처럼 오류가 납니다.. 도움 구합니다 ㅠㅠ

@2히히히 

update `g5_config` set `cf_admin` = 'admin@test.com' where `cf_admin` = "admin"; 
이건 데이터 베이스에서 query문 으로 작성하셔야합니다~

 

게시판 목록

그누보드5 팁자료실

글쓰기
🐛 버그신고