회원가입관리 회원 ip 저장

안녕하세요,

질문 두가지가 있는데요,

1. 회원들이 회원가입시에 ip도 같이 워드프레스에 저장될 수 있는 방법이 있을까요? 새로운 회원들이 가입시에 자동으로 저에게 이메일이 오는데, 거기엔 user ip도 같이 뜨는데 워드프레스에는 따로 저장이 되는 것 같지 않아서요..

2. 코스모스팜 login 페이지에는 소셜미디어 로그인이 같이 뜨는데 (즉, 소셜미디어 로그인 옵션도 주는데), register페이지에도 추가로 소셜미디어 로그인 옵션을 넣고 싶은데 가능한가요?  소셜로그인도 가능하다는 걸 모르고 register 페이지를 누른 회원들이 편리할수 있게  같은 페이지에 코스모스팜 register 폼 작성 또는 소셜로그인 옵션을 주고 싶어서요. 

감사합니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    1. user_register 액션을 사용하시면 회원가입 시 사용자의 ip도 저장하실 수 있습니다.

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보세요.

    add_action('user_register', 'my_user_register');
    function my_user_register($user_id){
    	$ip = '';
    	if(isset($_SERVER["HTTP_CF_CONNECTING_IP"]) && $_SERVER["HTTP_CF_CONNECTING_IP"] && filter_var($_SERVER['HTTP_CF_CONNECTING_IP'], FILTER_VALIDATE_IP)){
    		$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
    	}
    	else if(isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'] && filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP)){
    		$ip = $_SERVER['HTTP_CLIENT_IP'];
    	}
    	else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] && filter_var($_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP)){
    		$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    	}
    	else if(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)){
    		$ip = $_SERVER['REMOTE_ADDR'];
    	}
    	
    	if($ip){
    		update_user_meta($user_id, 'user_ip', $ip);
    	}
    }

    데이터베이스(DB) usermeta 테이블에 meta_key 컬럼이 user_ip 저장되며

    meta_value 컬럼에는 실제 사용자의 ip로 저장됩니다.

     

    워드프레스에서는 get_user_meta 함수로 표시하실 수 있습니다.

     

    추가로, 코스모스팜 회원관리 플러그인의

    로그인 기록 저장 설정을 사용하시면

    언제 어디서 로그인을 시도했는지 IP주소와 성공 여부 등 정보를 저장합니다.

    워드프레스 사용자 목록 페이지에 마지막 로그인 시간을 표시합니다.

    관련 정보는 데이터베이스(DB) cosmosfarm_members_login_history 테이블에 저장됩니다.

     

    2. 소셜 로그인 버튼은 아래의 숏코드로 표시하실 수 있습니다.

    [cosmosfarm_members_social_buttons]

    회원가입 페이지에도 표시하는 방법은

    아래의 링크 참고해보시겠어요?

    https://www.cosmosfarm.com/threads/document/16988

    고맙습니다.

  • 감사합니다!

     코스모스팜 회원관리 플러그인을 사용을 하고 있는데요,

    말씀하신데로, 로그인 기록 저장 설정을 사용하려면 어떻게 설정을 하면 될까요?^^ 코스모스팜 회원관리를 사용하고 있다면 알려주신 코드를 따로 function php.에 저장하지 않아도 되지요?

    말씀하신데로 워드프레스 사용자 목록 페이지에 마지막 로그인 시간은 표시가 되지만 ip주소는 보이지 않네요~^^;;

    감사합니다.

  • 이전 댓글에 안내해드린 user_register 액션 코드를 추가해서

    회원가입 시 아이피 주소를 표시하시려면

    테마 쪽 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    add_filter('manage_users_columns', 'my_manage_users_columns', 10, 1);
    function my_manage_users_columns($columns){
    	$columns['user_ip'] = 'ip';
    	return $columns;
    }
    
    add_filter('manage_users_custom_column', 'my_manage_users_custom_column', 10, 3);
    function my_manage_users_custom_column($output, $column_name, $user_id){
    	global $wpdb;
    
    	if($column_name == 'user_ip'){
    		$output = $wpdb->get_var("SELECT `meta_value` FROM `{$wpdb->prefix}usermeta` WHERE `user_id`='$user_id' AND `meta_key`='user_ip' LIMIT 1");
    	}
    	
    	return $output;
    }

     

    코스모스팜 회원관리 플러그인의 로그인 기록 저장은

    워드프레스 관리자 -> 회원가입관리 -> 보안설정 페이지에서 설정하실 수 있습니다.

    로그인 기록 저장 기능 사용 시 저장된 ip로 표시하시려면

    아래의 코드를 추가해보시겠어요?

    add_filter('manage_users_columns', 'my_manage_users_columns', 10, 1);
    function my_manage_users_columns($columns){
    	$columns['ip_address'] = 'ip';
    	return $columns;
    }
    
    add_filter('manage_users_custom_column', 'my_manage_users_custom_column', 10, 3);
    function my_manage_users_custom_column($output, $column_name, $user_id){
    	global $wpdb;
    	
    	$option = get_cosmosfarm_members_option();
    	if($option->save_login_history && $column_name == 'ip_address'){
    		$output = $wpdb->get_var("SELECT `ip_address` FROM `{$wpdb->prefix}cosmosfarm_members_login_history` WHERE `user_id`='$user_id' ORDER BY `login_history_id` DESC LIMIT 1");
    	}
    	
    	return $output;
    }

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요