로또복권 모듈 분석 결과
작성자 숭숭군, 2017년 작품이라 XE 스타일 코드가 그대로야. PHP 파일 7개, 쿼리 XML 8개, 스킨/템플릿 구조.
PHP 8 호환 문제점 (총 3가지 카테고리):
1. &getController() / &getModel() 등 참조 반환 호출 — 가장 많음 거의 모든 파일에서 &getController('module'), &getModel('module'), &getAdminModel('module'), &getModel('layout'), &DB::getInstance() 이런 식으로 &를 붙여서 호출하고 있어. PHP 8에서는 이게 deprecated → 에러 발생. 전부 & 제거해야 함.
2. new Object() → new BaseObject() lotterylotto.class.php에서 return new Object();, return new Object(0, 'success_updated'); 사용 중. lotterylotto.admin.controller.php에서도 return new Object(-1, '선택 대상이 없습니다');. Rhymix에서는 Object → BaseObject로 변경됨.
3. _XE_PATH_ → RX_BASEDIR lotterylotto.mobile.php에서 require_once(_XE_PATH_ . 'modules/lotterylotto/lotterylotto.view.php'); 사용 중. Rhymix 호환을 위해 RX_BASEDIR로 바꾸거나, 둘 다 지원하게 분기 처리 필요.
4. 초기화 안 된 변수 접근 (PHP 8 경고) dispLotterylottoAdminStats()에서 $stats->sum_tax, $stats->first_cnt 등을 초기화 없이 바로 + 연산. PHP 8에서는 undefined property 경고 발생. $stats = new stdClass();로 초기화 후 각 속성도 0으로 세팅 필요.
5. $args 미초기화 여러 곳에서 $args->module = 'lotterylotto'; 처럼 $args = new stdClass(); 없이 바로 프로퍼티 할당. PHP 8에서 경고.
6. 보안 이슈 — eval() 사용 ⚠️ lotterylotto.controller.php의 procLotterylottoBuyLottery()에서 eval() 2번 사용. 포인트히스토리 모듈 연동용인데, 주석에도 "제거해도됨"이라 써있어. 이건 제거하는 게 좋겠어.
===================================================================================================
다운로드 : lotterylotto_patched.zip
1차 패치파일 : lotterylotto-패치파일.zip
====================================================================================================

v1.0.5에서 1.1.0 으로 버전업 하였습니다.

네온 스킨

심플 스킨
모바일 최적화 스킨

기본스킨
============================================================================
로또복권 모듈 v1.1.0 수정사항
PHP 호환성 (PHP 7.4~8.4)
&getModel(),&getController(),&getAdminModel(),&DB::getInstance()참조 호출 32곳 →&제거new Object()3곳 →new BaseObject()_XE_PATH_→RX_BASEDIR/_XE_PATH_분기 처리 (mobile.php)- 미초기화 변수 접근 →
$args = new stdClass()24곳 추가 $stats속성 미초기화 → 0으로 초기화 (admin.view.php 통계)foreach전is_array()안전 체크 추가count(null)PHP 8 에러 →is_array체크 추가 (model.php)꽝따옴표 누락 →'꽝'문자열로 수정 (controller.php)$logged_infonull일 때->member_srl접근 크래시 방지array_fill()인자(int)캐스팅 추가 (model.php)
보안
eval()4곳 전부 제거 (controller.php, 포인트히스토리 연동 — 원본 주석에도 "제거해도됨")
서버 환경 호환성
date_default_timezone_set('Asia/Seoul')하드코딩 제거 (Rhymix 자체 관리)cash/point모듈 로드 시null체크 추가 (해당 모듈 없는 서버 대응)
스킨 수정 (skins + m.skins 전체)
- HTML 내
&getModel()참조 호출 →getModel()수정 /xe/modules/lotterylotto/img/point.gif하드코딩 →{@ $__pi = (defined("RX_BASEURL") ? RX_BASEURL : "/") . "modules/lotterylotto/img/point.gif"}인라인 변수 방식으로 변경 (서버 설치 경로 무관하게 동작)- view.php, mobile.php에
Context::set('module_img_path')추가
코드 리팩토링
- model.php
getPrizeMoney()— 1~5등 당첨금 처리 복붙 5회 반복 → for문 리팩토링 makeLotteryResult()결과 뽑기 — if/elseif 6단 분기 →isset($pocket[$y])한 줄로 간소화
스킨 3개 추가
casino(카지노 네온) — 다크 배경, 네온 그린/골드 포인트, 글로우 효과minimal(심플 미니멀) — 화이트 카드 UI, 부드러운 그림자, 애플 스타일mobile(모바일 최적화) — 모바일 퍼스트 세로형, 큰 터치 버튼, flex 레이아웃- 각 스킨에
box-sizing:border-box적용,.l_info/.r_info너비 조정
info.xml
- 버전: 1.0.5 → 1.1.0
- 날짜: 2017-12-29 → 2026-05-22
- 설명에 "(PHP 7.4~8.4 호환)" 추가
- 수정자: 불패의초인 (BSplus) / bsplus.net 추가
객체를 먼저 선언하지 않고 속성을 추가하려 하고 있습니다. 오래된 자료에서 종종 사용하던 코딩 방식이나 최근 PHP에서는 허용되지 않으니, 에러 메시지에 포함된 파일명과 줄 번호를 참고하여 수정하세요.
rhymix_version : 2.1.33
date : 2026-05-26 10:38:37 +0900 (2026-05-26 01:38:37 UTC)
php : 8.3.11 (64-bit)
server : Apache
모듈 설치후 설정 초기 저장이후 위와 같은 에러가 납니다.