CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.1 |
php 7.1로 넘어오면서
date관련해서, 혹시
문법 사용이 변경되었나요? 구글 검색해본 결과 변경된 부분이 없는 것 같은데
if(!Context::get('last_login')) return;
require_once('./addons/howlogin/func/howlogin.func.php');
$howlogin = new howlogin;
$timeRecord = $howlogin->getTime(Context::get('last_login'));
$nick_name = Context::get('nick_name');
if(!$addon_info->login_text)
if(!defined("__XE__")) exit();
class howlogin{
function getTime($date, $timeover){
$year = zDate($date,'Y');
$month = zDate($date,'m');
$day = zDate($date,'d');
$hour = zDate($date,'H');
$min = zDate($date,'m');
$sec = zDate($date,'s');
[18-Jun-2019 15:47:26 Etc/GMT-9] PHP Exception: ArgumentCountError #0 "Too few arguments to function howlogin::getTime(), 1 passed in /home/user/html/addons/howlogin/howlogin.addon.php on line 44 and exactly 2 expected" in addons/howlogin/func/howlogin.func.php on line 6
#0 /home/user/html/addons/howlogin/howlogin.addon.php(44): howlogin->getTime()
#1 /home/user/html/files/cache/addons/pc.php(537): include()
#2 /home/user/html/classes/module/ModuleObject.class.php(605): include()
#3 /home/user/html/classes/module/ModuleHandler.class.php(787): ModuleObject->proc()
#4 /home/user/html/index.php(53): ModuleHandler->procModule()
댓글 20
addon.php 파일에서
//타임설정 체크
$timing = $addon_info->login_alert_timing;
이렇게 애드온 설정에서 알림창 띄우는 시간 간격 옵션을 $timing 에 사용을 하도록 한 것 같은데..
func.php 파일에서는..
$timeover 로 사용한 것으로 보입니다.
이부분이 문제가 있는건지 잘 모르겠지만 조금 이상해 보입니다.
혹시모르니 $timeover 를 $timing 으로 바꿔 보시고 결과를 한번 보시는 것도....
흑흑 5.6에서 7.1로 넘어가고 애드온 사용이 20개 가량되는데 오류가 한두개가 아니네요 ㅠ_ㅠ
$timeover 가 많이 나오는데 모두 바꾸신건 맞죠 ?
getTime 함수에는 분명히 2개의 변수를 넘겨야 하는데, Context::get('last_login') 1개만 넘기고 있네요. PHP 7.0까지는 1개만 넘겨도 두 번째 변수는 그냥 NULL이 되었지만 PHP 7.1에서는 치명적인 에러가 납니다. 애당초 잘못 작성된 코드이니 PHP 탓을 할 수도 없고요.
변수 이름이 $timeover인지 $timing인지는 중요하지 않습니다. getTime 함수에 넘기는 갯수부터 맞춰야 합니다.
이런 부분이 보이는데요. all 값은 분명히 애드온 설정에서 알림창 간격 옵션 값이거든요. 이걸 변수명 자체가 틀리면 작동이 안되는거 아닌가요?
물론 지금 php오류는 별개의 문제라고 치더라도요....
아 그럼
44번 라인을
$timeRecord = $howlogin->(getTime(Context::get('last_login'), $addon_info->login_alert_timing);
이렇게 해주면
$timeover 자리에 $addon_info->login_alert_timing
요게 들어가게 될까요 ???
98번라인에 보니..
$timing_alert = $howlogin->getTime($_SESSION['last_logged'], $timing);
이렇게 된거 보니 $timing을 사용하시려면 $timing 을 위쪽으로 올리시고 44번 라인도 동일하게 해주셔야 할 것 같은데 아닐까요?null 로 넣으면 함수에서 계산하려는게 엉터리가 될 것 같아서요.
예전에는 자동으로 null로 입력되었었는데 정상적으로 동작했던 것으로보아..
44번 라인에는 계산이 필요없는게 맞는거 같네요. 알림창을 띄우기 위한 것은 아래에서만 하나봅니다.
$howlogin->getTime(Context::get('last_login'), ''); 로 해결했습니다 ㅠ_ㅠ
ereg도 문제인데 (포인트 팡팡 플러스 애드온)
$msg_pang = eregi_replace("\r|\n", "", strip_tags($msg_pang,'<br>'));
그냥 preg_replace로만교체해도 문제가 없을까요!?
$msg_pang = preg_replace ("\r|\n", "", strip_tags($msg_pang,'<br>'));
$msg_pang = preg_replace("\r|\n", "", strip_tags($msg_pang,'<br>'));
preg가 문법 사용방법이 약간 달라져서
$msg_pang = preg_replace("/\r|\n/", "", strip_tags($msg_pang,'<br>'));
/ / 를 넣는게 맞는건지 preg_replace만 바꺼줘도 되는건지 헷갈리네요 혹시 동작이 안될까봐
preg로 바꾸면 정규식 앞뒤에 슬래시 넣어야 합니다. 쌍따옴표도 문제가 될 수 있어요.
$msg_pang = preg_replace ('/\r|\n/', "", strip_tags($msg_pang,'<br>'));
따옴표도 다 바꿔야겠네요!