미니톡포럼

미니톡을 이용하는데 있어 의견이나 궁금한점이 있다면 미니톡포럼을 이용하여 보세요.

문의게시판

문의사항이 있다면 누구나 자유롭게 질문하고 답변할 수 있습니다.

Q채팅호스팅 템플릿 및 유저 IP를 확인할 수 없습니다 문의건.

안녕하세요.


채팅호스팅을 체험하기 위해 클라이언트 설치 및 연동을 완료하였습니다.


위젯을 통해 띄우도록했는데 아래처럼 템플릿도 제대로 보이지않고 PC로 접근시에 아래 에러도 발생합니다.

휴대폰 와이파이로는 접근은 되는데 템플릿이 아래와같아서 글이안써지고 안보입니다 ㅠ


첨부파일
익명-2RMBGV
LV.1

A 답변

안녕하세요.

현재 보여주신 스크린샷만으로는 어떤것이 원인인지 파악이 어렵습니다.

상태를 보니 일단 기본적으로 스타일시트나 스크립트 일부가 제대로 로딩이 되지 않는 것으로 보입니다만, 정확한 것은 사이트주소를 알려주셔야 원인을 파악할 수 있을 것 같습니다.

그리고 혹시 클라우드플레어나 CDN 같은 것을 사용하시거나, L4 를 사용하는 환경인지도 알려주시면 문제해결에 도움이 될 것으로 보입니다.

알쯔
LV.17
karius
https://svrforum.com/talk 입니다.
웹서버 앞단에 Sophos utm 를 적용해서 사용중입니다.
알쯔
일단 디자인요소가 깨지는 이유는 미니톡 채팅위젯 템플릿을 default 를 사용중이신데,
미니톡 클라이언트가 설치된 폴더의 /templets/default/style.css 파일이 누락되어서 발생하는 문제로 보입니다.
그리고 미니톡은 유저의 실제 IP를 이용해 usercode 값을 검증합니다.
미니톡 채팅서버는 유저의 실제 IP 를 획득할 수 있으나, 미니톡 클라이언트는 PHP의 변수를 이용해 유저의 실제 IP를 구하는데, PHP 가 설치된 웹서버 앞에 CDN이나 UTM 등이 존재하면, 유저의 실제 IP를 확인하기가 어렵습니다.

미니톡 클라이언트의 /classes/functions.php 파일을 열어보시면, GetClientIp() 함수가 있습니다.

PHP 에서 $_SERVER['REMOTE_ADDR'] 변수에는 유저의 IP가 기록되나, 웹서버 앞에 무언가 존재하면, 해당 무언가의 IP를 반환하게 됩니다.
따라서, 클라우드 플레어 같은 CDN 들은 $_SERVER['HTTP_X_FORWARDED_FOR'] 를 통해 유저의 실제 IP를 추가로 던져주는데

사용하시고 계시는 UTM도 이와 비슷한 기능이 존재할 것 입니다.
유저의 실제 IP를 이용해서 usercode 를 만들 수 있도록 GetClientIp() 함수를 리턴값을 유저의 실제 IP가 되도록 수정해보시기 바랍니다.
karius
흠,, 앞서 프록시 서버에서 HTTP_X_FORWARDED_FOR와 같은방식으로 ip를 넘겨서 nginx 로그에는 ip가 정상적으로 찍히는데요.
어떤걸 수정해야할지 갈피잡는게어렵네요 ㅠ
답변 감사드립니다!
알쯔
채팅위젯에 usercode 를 만드는 함수가 아래와 같이 구성되어있습니다.

function MinitalkUserCode($nickname,$level=1,$nickcon=null,$photo=null,$extras=array()) {
    $user = array(
        'nickname'=>$nickname,
        'level'=>intval($level),
        'nickcon'=>$nickcon ? $nickcon : null,
        'photo'=>$photo ? $photo : null,
        'extras'=>count($extras) > 0 ? $extras : null,
        'ip'=>GetClientIp()
    );
    
    return MinitalkEncoder(json_encode($user,JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
}

저기에 'ip'=>GetClientIP() 가 들어가는데, var_dump(GetClientIp()); 하여서, 유저의 실제 아이피가 기록되는지, 그리고 실제 아이피가 IPv4 인지 (IPv6 는 지원되지 않습니다.) 확인해보시기 바랍니다.