회원가입 방식이 SNS인지 직접 가입인지 알 수 있는 방법이 있나요?
본문
제목 그대로입니다.
이게 필요해져서 찾고 있는데 쉽지 않네요^^
SNS 소셜로 가입한 회원인지 사이트에서 회원가입 버튼 눌러 직접 가입한 사람인지
알 수 있는 방법이 있을까요?
SNS로 가입한 경우 회원 탈퇴시 비번을 묻고 있어서 이걸 이메일로 탈퇴 URL이나 인증 번호를 보내서
처리하려고 하고 있는데 구분할 수 있는 변수가 있는지 궁금하네요..
SQL DB를 봐도 딱히 없는거 같기도 하고 ..
답변 2
https://github.com/gnuboard/gnuboard5/blob/master/plugin/social/register_member_update.php#L197
//소셜 로그인 계정 추가
if( function_exists('social_login_success_after') ){
social_login_success_after($mb, '', 'register');
}
https://github.com/gnuboard/gnuboard5/blob/master/plugin/social/includes/functions.php#L822
//소셜 로그인 후 계정 업데이트
function social_login_success_after($mb, $link='', $mode='', $tmp_create_info=array()){
global $g5, $config;
...
social_user_profile_replace($mb_id, $provider, $user_profile);
...
return $link;
}
https://github.com/gnuboard/gnuboard5/blob/master/plugin/social/includes/functions.php#L206
function social_user_profile_replace( $mb_id, $provider, $profile ){
...
'mp_register_day' => ! empty($row) ? "'".$row['mp_register_day']."'" : "'". G5_TIME_YMDHIS . "'",
...
}
다음 두 항목을 비교해보면 되지 않을까 싶습니다.
$g5['member_table'] 의 mb_datetime
$g5['social_profile_table'] 의 mp_register_day
/*
SELECT
COUNT(1) cnt
FROM
g5_member gm INNER JOIN g5_member_social_profiles gmsp
ON gmsp.mb_id = gm.mb_id
WHERE
gm.mb_id = 'member-id'
AND UNIX_TIMESTAMP(gmsp.mp_register_day) - UNIX_TIMESTAMP(gm.mb_datetime) BETWEEN 0 AND 5
;
*/
function get_member_join_from_sns($mb_id, $seconds_margin = 5) {
$query = "SELECT ... WHERE gm.mb_id = '{$mb_id}' ... BETWEEN 0 AND {$seconds_margin}"
$row = sql_fetch($query);
if ($row['cnt'] == 1) {
return true;
} else {
return false;
}
}
답변을 작성하시기 전에 로그인 해주세요.