XE 때부터 휴대폰 인증을 받아 회원가입을 받아 놓았는데요,

그 때는 사용자정의로 추가한 휴대폰 번호예요.

 

근데 라이믹스 1.9 버전대에 전화번호 가입과 인증까지 받을 수 있어서

이제는 기존 인증을 제거하고 라이믹스 기본으로 사용하려고 해요.

 

그런데,

1. 라이믹스 기본 인증이 사용자정의로 된 휴대폰은 검증하지 못하기 때문에 중복가입 등 문제가 발생할 수 있고

2. 기존 휴대폰 사용자정의는 없애야 하는데 (가입시 라이믹스 기본 전화번호와 사용자정의 휴대폰 이렇게 2개라서)

없애면 기존 회원 휴대폰 정보가 없어지거나 볼 수가 없는 문제가 생기더라구요.

 

그래서, 기존 사용자정의 휴대폰을 모두 라이믹스 기본 전화번호로 옮기고 싶은데,

다른 분들도 이런 문제를 분명 겪었을 것 같은데

툴이 있나요? 아니면, DB 작업을 하셨을까요?

 

도움을 얻고 싶습니다.

  • Lv16

    사용자정의 값을 일괄 이전해야 하는데 기본 내장된 기능은 따로 없을거고 스크립트 작성해서 실행하실수는 있습니다.

    common/scripts 폴더내 파일 참고하셔서 사용자 정의 값을 읽어 라이믹스 기본 전화번호 필드로 옮기는 코드 작성후 실행하시면 될겁니다.(이왕 작업하는김에 중복체크나 기타 유효성 검사도 한번 더 하면 좋겠죠)

  • Lv3

    답변 감사합니다~
    php 파일 만들어서 옮기는 방법입니다.

    mphone.php

    <?php
    // 오류 보고 설정
    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    // 로그 함수
    function log_message($message) {
    echo $message . "\n";
    error_log($message);
    }

    log_message("Script started");

    // 데이터베이스 연결 설정
    $host = 'localhost';
    $db = 'xxxxx'; // db name 입력
    $user = 'xxxxx'; // db id 입력
    $pass = 'xxxxx'; // db pw 입력
    $charset = 'utf8mb4';

    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
    ];

    try {
    log_message("Attempting to connect to database");
    $pdo = new PDO($dsn, $user, $pass, $options);
    log_message("Connected to database successfully");
    } catch (\PDOException $e) {
    log_message("Database connection failed: " . $e->getMessage());
    exit;
    }

    // 모든 회원 데이터 가져오기
    try {
    log_message("Fetching member data");
    $stmt = $pdo->query("SELECT member_srl, extra_vars FROM xe_member WHERE extra_vars IS NOT NULL AND extra_vars != ''");
    log_message("Member data fetched successfully");
    } catch (\PDOException $e) {
    log_message("Error fetching member data: " . $e->getMessage());
    exit;
    }

    $count = 0;
    while ($row = $stmt->fetch()) {
    log_message("Processing member_srl: " . $row['member_srl']);
    $extra_vars = @unserialize($row['extra_vars']);

    if ($extra_vars === false) {
    log_message("Failed to unserialize extra_vars for member_srl: " . $row['member_srl']);
    continue;
    }

     

    // 사용자정의가 mobile 로 되어 있다면 $extra_vars->mobile
    if (isset($extra_vars->mobile) && is_array($extra_vars->mobile) && count($extra_vars->mobile) == 3) {
    $phone_number = implode('', $extra_vars->mobile);

    // phone_number, phone_country, phone_type 업데이트
    try {
    $update_stmt = $pdo->prepare("UPDATE xe_member SET phone_number = ?, phone_country = 'KOR', phone_type = '' WHERE member_srl = ?");
    $update_stmt->execute([$phone_number, $row['member_srl']]);
    log_message("Updated member_srl: " . $row['member_srl'] . " with phone number: " . $phone_number);
    $count++;
    } catch (\PDOException $e) {
    log_message("Error updating phone info for member_srl " . $row['member_srl'] . ": " . $e->getMessage());
    }
    } else {
    log_message("No valid mobile data found for member_srl: " . $row['member_srl']);
    }
    }

    log_message("Update process completed. Total updated records: " . $count);
    ?>


    이렇게 만들어서 웹상에서 php 파일을 실행시키면 됩니다.
    http://도메인주소/mphone.php