XE 회원설정 사용자정의로 추가한 휴대폰을 라이믹스 기본 전화번호로 옮기고 싶은데 어떻게 해결하셨나요?
CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.4 |
XE 때부터 휴대폰 인증을 받아 회원가입을 받아 놓았는데요,
그 때는 사용자정의로 추가한 휴대폰 번호예요.
근데 라이믹스 1.9 버전대에 전화번호 가입과 인증까지 받을 수 있어서
이제는 기존 인증을 제거하고 라이믹스 기본으로 사용하려고 해요.
그런데,
1. 라이믹스 기본 인증이 사용자정의로 된 휴대폰은 검증하지 못하기 때문에 중복가입 등 문제가 발생할 수 있고
2. 기존 휴대폰 사용자정의는 없애야 하는데 (가입시 라이믹스 기본 전화번호와 사용자정의 휴대폰 이렇게 2개라서)
없애면 기존 회원 휴대폰 정보가 없어지거나 볼 수가 없는 문제가 생기더라구요.
그래서, 기존 사용자정의 휴대폰을 모두 라이믹스 기본 전화번호로 옮기고 싶은데,
다른 분들도 이런 문제를 분명 겪었을 것 같은데
툴이 있나요? 아니면, DB 작업을 하셨을까요?
도움을 얻고 싶습니다.
댓글 2
사용자정의 값을 일괄 이전해야 하는데 기본 내장된 기능은 따로 없을거고 스크립트 작성해서 실행하실수는 있습니다.
common/scripts 폴더내 파일 참고하셔서 사용자 정의 값을 읽어 라이믹스 기본 전화번호 필드로 옮기는 코드 작성후 실행하시면 될겁니다.(이왕 작업하는김에 중복체크나 기타 유효성 검사도 한번 더 하면 좋겠죠)
답변 감사합니다~
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