유창화님의 채팅수정소스중에서 정보
유창화님의 채팅수정소스중에서
본문
현재 접속자 부분만을 뺄려면 어떻게 하면 되나요?
한줄씩 빼보니 접속자 부분만을 남기게 되면 접속자가 보이지 않는군요.
일반접속스킨의 경우 홈페이지에 접속한 전체 접속자가 보이는 반면
채팅소스에서는 페이지에 접속한 사람만 보이는 것 같아 유용한 면이 많이 있네요.
댓글 전체

가장 간단한 방법은 <div> 크기 조정하고
보여주고 싶지않은 부분을 모두 type=hidden 으로 처리하시면 되지않을까요?
실제 출력을 담당하는 부분은 chat.php 파일의 상단부근에 있습니다...^^
보여주고 싶지않은 부분을 모두 type=hidden 으로 처리하시면 되지않을까요?
실제 출력을 담당하는 부분은 chat.php 파일의 상단부근에 있습니다...^^

히든으로 감추어도 채팅창 내용나오는 부분이 커집니다. 메시지 입력창이나 이름부분은 히든으로 감추면 접속자가 안보이네요. ㅠㅠ

<?
include_once("_common.php");
include_once("../head.sub.php");
?>
<br>
<!----------------------------------------------------------------------------------->
<!-- 채팅 -->
<!----------------------------------------------------------------------------------->
<center>
<div id='chatting' style="width=220px;text-align:center;float:center;">
<span style='width:200px;padding:5px;font-size:9pt;font-family:굴림;line-height:130%;text-align:left;'><b>현재접속자</b></span>
<div id='chat_members' style='width:200px;height:300px;overflow-y:scroll;border:1px solid #000000;padding:5px;font-size:9pt;font-family:굴림;line-height:130%;text-align:left;float:right;' onmouseover='is_scroll=true;' onblur='is_scroll=false'></div>
<div style="clear:both; padding:5px 0 0 0;"></div>
<input type='hidden' id='last_id'>
<input type='hidden' id='chat_name'>
</div>
<script>
// request 객체 생성
var req = null;
function create_request() {
var request = null;
try {
request = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml12.XMLHTTP");
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
request = null;
}
}
}
if (request == null)
alert("Error creating request object!");
else
return request;
}
var req = create_request();
var timer_id;
var is_scroll = false;
function chat_update() {
var last_id = document.getElementById('last_id').value;
var url = 'chat_update.php';
var param = '';
param += '&last_id=' + escape(last_id);
param += '&chat_ss=' + escape('<?=session_id()?>');
req.open("POST", url, true);
req.onreadystatechange = chat_update_complete;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(param);
}
function chat_update_complete() {
if (req.readyState == 4) {
if (req.status == 200) {
chat_result_display(req);
}
}
}
function chat_get() {
var chat_name = document.getElementById('chat_name').value;
var last_id = document.getElementById('last_id').value;
var url = 'chat_update.php';
var param = '';
param += 'name=' + encodeURIComponent(chat_name);
param += '&last_id=' + last_id;
param += '&chat_ss=' + escape('<?=session_id()?>');
req.open("POST", url, true);
req.onreadystatechange = chat_get_complete;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(param);
}
function chat_get_complete() {
if (req.readyState == 4) {
if (req.status == 200) {
chat_result_display(req);
timer_id = setTimeout("chat_get()", 1000);
}
}
}
function chat_result_display(req) {
var chat_members = req.responseXML.getElementsByTagName("chat_members");
//alert(req.responseText);
document.getElementById('chat_members').innerHTML = '';
for (i=0; i<chat_members.length; i++) {
document.getElementById('chat_members').innerHTML += chat_members[i].getElementsByTagName("ch_name")[0].firstChild.nodeValue + "(" + chat_members[i].getElementsByTagName("ch_ip")[0].firstChild.nodeValue + ")</br>";
}
}
document.getElementById('chat_name').value = "<?=$member[mb_id]?$member[mb_nick]:'손님_'.rand(1,1000)?>";
chat_get();
</script>
<!----------------------------------------------------------------------------------->
</center>
<?
include_once("../tail.sub.php");
?>
include_once("_common.php");
include_once("../head.sub.php");
?>
<br>
<!----------------------------------------------------------------------------------->
<!-- 채팅 -->
<!----------------------------------------------------------------------------------->
<center>
<div id='chatting' style="width=220px;text-align:center;float:center;">
<span style='width:200px;padding:5px;font-size:9pt;font-family:굴림;line-height:130%;text-align:left;'><b>현재접속자</b></span>
<div id='chat_members' style='width:200px;height:300px;overflow-y:scroll;border:1px solid #000000;padding:5px;font-size:9pt;font-family:굴림;line-height:130%;text-align:left;float:right;' onmouseover='is_scroll=true;' onblur='is_scroll=false'></div>
<div style="clear:both; padding:5px 0 0 0;"></div>
<input type='hidden' id='last_id'>
<input type='hidden' id='chat_name'>
</div>
<script>
// request 객체 생성
var req = null;
function create_request() {
var request = null;
try {
request = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml12.XMLHTTP");
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
request = null;
}
}
}
if (request == null)
alert("Error creating request object!");
else
return request;
}
var req = create_request();
var timer_id;
var is_scroll = false;
function chat_update() {
var last_id = document.getElementById('last_id').value;
var url = 'chat_update.php';
var param = '';
param += '&last_id=' + escape(last_id);
param += '&chat_ss=' + escape('<?=session_id()?>');
req.open("POST", url, true);
req.onreadystatechange = chat_update_complete;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(param);
}
function chat_update_complete() {
if (req.readyState == 4) {
if (req.status == 200) {
chat_result_display(req);
}
}
}
function chat_get() {
var chat_name = document.getElementById('chat_name').value;
var last_id = document.getElementById('last_id').value;
var url = 'chat_update.php';
var param = '';
param += 'name=' + encodeURIComponent(chat_name);
param += '&last_id=' + last_id;
param += '&chat_ss=' + escape('<?=session_id()?>');
req.open("POST", url, true);
req.onreadystatechange = chat_get_complete;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(param);
}
function chat_get_complete() {
if (req.readyState == 4) {
if (req.status == 200) {
chat_result_display(req);
timer_id = setTimeout("chat_get()", 1000);
}
}
}
function chat_result_display(req) {
var chat_members = req.responseXML.getElementsByTagName("chat_members");
//alert(req.responseText);
document.getElementById('chat_members').innerHTML = '';
for (i=0; i<chat_members.length; i++) {
document.getElementById('chat_members').innerHTML += chat_members[i].getElementsByTagName("ch_name")[0].firstChild.nodeValue + "(" + chat_members[i].getElementsByTagName("ch_ip")[0].firstChild.nodeValue + ")</br>";
}
}
document.getElementById('chat_name').value = "<?=$member[mb_id]?$member[mb_nick]:'손님_'.rand(1,1000)?>";
chat_get();
</script>
<!----------------------------------------------------------------------------------->
</center>
<?
include_once("../tail.sub.php");
?>

<?
/*******************************************************************************
** 공통 변수, 상수, 코드
*******************************************************************************/
error_reporting(E_ALL ^ E_NOTICE);
// 보안설정이나 프레임이 달라도 쿠키가 통하도록 설정
header('P3P: CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC"');
if (!isset($set_time_limit)) $set_time_limit = 0;
@set_time_limit($set_time_limit);
// 짧은 환경변수를 지원하지 않는다면
if (isset($HTTP_POST_VARS) && !isset($_POST)) {
$_POST = &$HTTP_POST_VARS;
$_GET = &$HTTP_GET_VARS;
$_SERVER = &$HTTP_SERVER_VARS;
$_COOKIE = &$HTTP_COOKIE_VARS;
$_ENV = &$HTTP_ENV_VARS;
$_FILES = &$HTTP_POST_FILES;
if (!isset($_SESSION))
$_SESSION = &$HTTP_SESSION_VARS;
}
//
// phpBB2 참고
// php.ini 의 magic_quotes_gpc 값이 FALSE 인 경우 addslashes() 적용
// SQL Injection 등으로 부터 보호
//
if( !get_magic_quotes_gpc() )
{
if( is_array($_GET) )
{
while( list($k, $v) = each($_GET) )
{
if( is_array($_GET[$k]) )
{
while( list($k2, $v2) = each($_GET[$k]) )
{
$_GET[$k][$k2] = addslashes($v2);
}
@reset($_GET[$k]);
}
else
{
$_GET[$k] = addslashes($v);
}
}
@reset($_GET);
}
if( is_array($_POST) )
{
while( list($k, $v) = each($_POST) )
{
if( is_array($_POST[$k]) )
{
while( list($k2, $v2) = each($_POST[$k]) )
{
$_POST[$k][$k2] = addslashes($v2);
}
@reset($_POST[$k]);
}
else
{
$_POST[$k] = addslashes($v);
}
}
@reset($_POST);
}
if( is_array($_COOKIE) )
{
while( list($k, $v) = each($_COOKIE) )
{
if( is_array($_COOKIE[$k]) )
{
while( list($k2, $v2) = each($_COOKIE[$k]) )
{
$_COOKIE[$k][$k2] = addslashes($v2);
}
@reset($_COOKIE[$k]);
}
else
{
$_COOKIE[$k] = addslashes($v);
}
}
@reset($_COOKIE);
}
}
// PHP 4.1.0 부터 지원됨
// php.ini 의 register_globals=off 일 경우
@extract($_GET);
@extract($_POST);
@extract($_SERVER);
// 완두콩님이 알려주신 보안관련 오류 수정
// $member 에 값을 직접 넘길 수 있음
$config = array();
$member = array();
$board = array();
$group = array();
$g4 = array();
$g4['path'] = '../';
include_once("$g4[path]/lib/constant.php"); // 상수 정의
include_once("$g4[path]/config.php"); // 설정 파일
include_once("$g4[path]/lib/common.lib.php"); // 공통 라이브러리
//-------------------------------------------
// SESSION 설정
//-------------------------------------------
ini_set("session.use_trans_sid", 0); // PHPSESSID를 자동으로 넘기지 않음
ini_set("url_rewriter.tags",""); // 링크에 PHPSESSID가 따라다니는것을 무력화함 (해뜰녘님께서 알려주셨습니다.)
session_save_path("{$g4['path']}/data/session");
if (isset($SESSION_CACHE_LIMITER))
@session_cache_limiter($SESSION_CACHE_LIMITER);
else
@session_cache_limiter("no-cache, must-revalidate");
ini_set("session.cache_expire", 180); // 세션 캐쉬 보관시간 (분)
ini_set("session.gc_maxlifetime", 1440); // session data의 gabage collection 존재 기간을 지정 (초)
session_set_cookie_params(0, "/");
ini_set("session.cookie_domain", $g4['cookie_domain']);
@session_start();
class chat {
var $cfg;//그누보드 환경설정
var $g4;//그누보드 환경설정
var $chat_file_member;
var $chat_member = Array();//현재 사용중인 사람 정보
var $chat_members = Array();//현재 접속자 정보
var $xml_members;//현재접속자 xml
var $list = Array();
function chat($cfg, $g4, $chat_member){
$this->cfg = $cfg;
$this->g4 = $g4;
$this->chat_file_members = $this->g4['path'] . '/data/chat_members.dat';
$this->chat_member = $chat_member;
if (strtoupper($g4['charset']) != 'UTF-8') {//인코딩이 다른경우 인코딩 변환
if (!empty($this->chat_member['name']) && is_utf8($this->chat_member['name']))
$this->chat_member['name'] = convert_charset('UTF-8','CP949',$this->chat_member['name']);
}
$this->get_chat_member();
}
//파일에서 현재 접속자 뽑아옴
function get_chat_member(){
$text_members = '';
$xml_members = '';
$temp = @file($this->chat_file_members);
if (is_array($temp)){
$i = 0;
foreach($temp as $val){
list($save_chat_ss, $save_name, $save_time, $save_ip) = explode("\t", trim($val));
if ($save_chat_ss == $this->chat_member['chat_ss']) {
continue;
}
else {
if (time() > $save_time + 2) continue;
$this->chat_members[$i]['chat_ss'] = $save_chat_ss;
$this->chat_members[$i]['name'] = $save_name;
$this->chat_members[$i]['time'] = $save_time;
$this->chat_members[$i]['ip'] = $save_ip;
$text_members .= $this->chat_members[$i]['chat_ss'] . "\t" . $this->chat_members[$i]['name'] . "\t" . $this->chat_members[$i]['time'] . "\t" . $this->chat_members[$i]['ip'] . "\n";
$xml_members .= "<chat_members>\n";
$xml_members .= "<ch_name>".get_text(addslashes(strip_tags($this->chat_members[$i]['name'])))."</ch_name>\n";
$xml_members .= "<ch_time>".get_text(addslashes(strip_tags($this->chat_members[$i]['time'])))."</ch_time>\n";
$xml_members .= "<ch_ip>".get_text(addslashes(strip_tags($this->chat_members[$i]['ip'])))."</ch_ip>\n";
$xml_members .= "</chat_members>\n";
$i++;
}
}
}
$this->chat_members[$i]['chat_ss'] = $this->chat_member['chat_ss'];
$this->chat_members[$i]['name'] = $this->chat_member['name'];
$this->chat_members[$i]['time'] = time();
$this->chat_members[$i]['ip'] = $_SERVER['REMOTE_ADDR'];
$text_members .= $this->chat_members[$i]['chat_ss'] . "\t" . $this->chat_members[$i]['name'] . "\t" . $this->chat_members[$i]['time'] . "\t" . $this->chat_members[$i]['ip'] . "\n";
$xml_members .= "<chat_members>\n";
$xml_members .= "<ch_name>".get_text(addslashes(strip_tags($this->chat_members[$i]['name'])))."</ch_name>\n";
$xml_members .= "<ch_time>".get_text(addslashes(strip_tags($this->chat_members[$i]['time'])))."</ch_time>\n";
$xml_members .= "<ch_ip>".get_text(addslashes(strip_tags($this->chat_members[$i]['ip'])))."</ch_ip>\n";
$xml_members .= "</chat_members>\n";
//파일에 저장
$fp = fopen ($this->chat_file_members, 'w');
fwrite($fp, $text_members);
fclose($fp);
$this->xml_members = $xml_members;
}
function print_xml(){
header("Content-Type:text/xml;");
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
$xml .= "<chatting>";
if (!empty($this->xml_members))$xml .= $this->xml_members;
$xml .= "</chatting>";
if (strtoupper($g4['charset'])!='UTF-8') $xml = convert_charset('CP949','UTF-8',$xml);
echo $xml;
}
}
/*
-----------------------------------------------------------
텍스트가 utf-8 인지 검사하는 함수
-----------------------------------------------------------
*/
function is_utf8($string) {
// From http://w3.org/International/questions/qa-forms-utf-8.html
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string);
}
/*
-----------------------------------------------------------
Charset 을 변환하는 함수
-----------------------------------------------------------
iconv 함수가 있으면 iconv 로 변환하고
없으면 mb_convert_encoding 함수를 사용한다.
둘다 없으면 사용할 수 없다.
*/
function convert_charset($from_charset, $to_charset, $str) {
if( function_exists('iconv') )
return iconv($from_charset, $to_charset, $str);
elseif( function_exists('mb_convert_encoding') )
return mb_convert_encoding($str, $to_charset, $from_charset);
else
die("Not found 'iconv' or 'mbstring' library in server.");
}
$chat_member = Array();
$chat_member['name'] = $name;
$chat_member['last_id'] = $last_id;
$chat_member['chat_ss'] = $chat_ss;
$chat = new chat($cfg, $g4, $chat_member);
$chat->print_xml();
?>
/*******************************************************************************
** 공통 변수, 상수, 코드
*******************************************************************************/
error_reporting(E_ALL ^ E_NOTICE);
// 보안설정이나 프레임이 달라도 쿠키가 통하도록 설정
header('P3P: CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC"');
if (!isset($set_time_limit)) $set_time_limit = 0;
@set_time_limit($set_time_limit);
// 짧은 환경변수를 지원하지 않는다면
if (isset($HTTP_POST_VARS) && !isset($_POST)) {
$_POST = &$HTTP_POST_VARS;
$_GET = &$HTTP_GET_VARS;
$_SERVER = &$HTTP_SERVER_VARS;
$_COOKIE = &$HTTP_COOKIE_VARS;
$_ENV = &$HTTP_ENV_VARS;
$_FILES = &$HTTP_POST_FILES;
if (!isset($_SESSION))
$_SESSION = &$HTTP_SESSION_VARS;
}
//
// phpBB2 참고
// php.ini 의 magic_quotes_gpc 값이 FALSE 인 경우 addslashes() 적용
// SQL Injection 등으로 부터 보호
//
if( !get_magic_quotes_gpc() )
{
if( is_array($_GET) )
{
while( list($k, $v) = each($_GET) )
{
if( is_array($_GET[$k]) )
{
while( list($k2, $v2) = each($_GET[$k]) )
{
$_GET[$k][$k2] = addslashes($v2);
}
@reset($_GET[$k]);
}
else
{
$_GET[$k] = addslashes($v);
}
}
@reset($_GET);
}
if( is_array($_POST) )
{
while( list($k, $v) = each($_POST) )
{
if( is_array($_POST[$k]) )
{
while( list($k2, $v2) = each($_POST[$k]) )
{
$_POST[$k][$k2] = addslashes($v2);
}
@reset($_POST[$k]);
}
else
{
$_POST[$k] = addslashes($v);
}
}
@reset($_POST);
}
if( is_array($_COOKIE) )
{
while( list($k, $v) = each($_COOKIE) )
{
if( is_array($_COOKIE[$k]) )
{
while( list($k2, $v2) = each($_COOKIE[$k]) )
{
$_COOKIE[$k][$k2] = addslashes($v2);
}
@reset($_COOKIE[$k]);
}
else
{
$_COOKIE[$k] = addslashes($v);
}
}
@reset($_COOKIE);
}
}
// PHP 4.1.0 부터 지원됨
// php.ini 의 register_globals=off 일 경우
@extract($_GET);
@extract($_POST);
@extract($_SERVER);
// 완두콩님이 알려주신 보안관련 오류 수정
// $member 에 값을 직접 넘길 수 있음
$config = array();
$member = array();
$board = array();
$group = array();
$g4 = array();
$g4['path'] = '../';
include_once("$g4[path]/lib/constant.php"); // 상수 정의
include_once("$g4[path]/config.php"); // 설정 파일
include_once("$g4[path]/lib/common.lib.php"); // 공통 라이브러리
//-------------------------------------------
// SESSION 설정
//-------------------------------------------
ini_set("session.use_trans_sid", 0); // PHPSESSID를 자동으로 넘기지 않음
ini_set("url_rewriter.tags",""); // 링크에 PHPSESSID가 따라다니는것을 무력화함 (해뜰녘님께서 알려주셨습니다.)
session_save_path("{$g4['path']}/data/session");
if (isset($SESSION_CACHE_LIMITER))
@session_cache_limiter($SESSION_CACHE_LIMITER);
else
@session_cache_limiter("no-cache, must-revalidate");
ini_set("session.cache_expire", 180); // 세션 캐쉬 보관시간 (분)
ini_set("session.gc_maxlifetime", 1440); // session data의 gabage collection 존재 기간을 지정 (초)
session_set_cookie_params(0, "/");
ini_set("session.cookie_domain", $g4['cookie_domain']);
@session_start();
class chat {
var $cfg;//그누보드 환경설정
var $g4;//그누보드 환경설정
var $chat_file_member;
var $chat_member = Array();//현재 사용중인 사람 정보
var $chat_members = Array();//현재 접속자 정보
var $xml_members;//현재접속자 xml
var $list = Array();
function chat($cfg, $g4, $chat_member){
$this->cfg = $cfg;
$this->g4 = $g4;
$this->chat_file_members = $this->g4['path'] . '/data/chat_members.dat';
$this->chat_member = $chat_member;
if (strtoupper($g4['charset']) != 'UTF-8') {//인코딩이 다른경우 인코딩 변환
if (!empty($this->chat_member['name']) && is_utf8($this->chat_member['name']))
$this->chat_member['name'] = convert_charset('UTF-8','CP949',$this->chat_member['name']);
}
$this->get_chat_member();
}
//파일에서 현재 접속자 뽑아옴
function get_chat_member(){
$text_members = '';
$xml_members = '';
$temp = @file($this->chat_file_members);
if (is_array($temp)){
$i = 0;
foreach($temp as $val){
list($save_chat_ss, $save_name, $save_time, $save_ip) = explode("\t", trim($val));
if ($save_chat_ss == $this->chat_member['chat_ss']) {
continue;
}
else {
if (time() > $save_time + 2) continue;
$this->chat_members[$i]['chat_ss'] = $save_chat_ss;
$this->chat_members[$i]['name'] = $save_name;
$this->chat_members[$i]['time'] = $save_time;
$this->chat_members[$i]['ip'] = $save_ip;
$text_members .= $this->chat_members[$i]['chat_ss'] . "\t" . $this->chat_members[$i]['name'] . "\t" . $this->chat_members[$i]['time'] . "\t" . $this->chat_members[$i]['ip'] . "\n";
$xml_members .= "<chat_members>\n";
$xml_members .= "<ch_name>".get_text(addslashes(strip_tags($this->chat_members[$i]['name'])))."</ch_name>\n";
$xml_members .= "<ch_time>".get_text(addslashes(strip_tags($this->chat_members[$i]['time'])))."</ch_time>\n";
$xml_members .= "<ch_ip>".get_text(addslashes(strip_tags($this->chat_members[$i]['ip'])))."</ch_ip>\n";
$xml_members .= "</chat_members>\n";
$i++;
}
}
}
$this->chat_members[$i]['chat_ss'] = $this->chat_member['chat_ss'];
$this->chat_members[$i]['name'] = $this->chat_member['name'];
$this->chat_members[$i]['time'] = time();
$this->chat_members[$i]['ip'] = $_SERVER['REMOTE_ADDR'];
$text_members .= $this->chat_members[$i]['chat_ss'] . "\t" . $this->chat_members[$i]['name'] . "\t" . $this->chat_members[$i]['time'] . "\t" . $this->chat_members[$i]['ip'] . "\n";
$xml_members .= "<chat_members>\n";
$xml_members .= "<ch_name>".get_text(addslashes(strip_tags($this->chat_members[$i]['name'])))."</ch_name>\n";
$xml_members .= "<ch_time>".get_text(addslashes(strip_tags($this->chat_members[$i]['time'])))."</ch_time>\n";
$xml_members .= "<ch_ip>".get_text(addslashes(strip_tags($this->chat_members[$i]['ip'])))."</ch_ip>\n";
$xml_members .= "</chat_members>\n";
//파일에 저장
$fp = fopen ($this->chat_file_members, 'w');
fwrite($fp, $text_members);
fclose($fp);
$this->xml_members = $xml_members;
}
function print_xml(){
header("Content-Type:text/xml;");
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
$xml .= "<chatting>";
if (!empty($this->xml_members))$xml .= $this->xml_members;
$xml .= "</chatting>";
if (strtoupper($g4['charset'])!='UTF-8') $xml = convert_charset('CP949','UTF-8',$xml);
echo $xml;
}
}
/*
-----------------------------------------------------------
텍스트가 utf-8 인지 검사하는 함수
-----------------------------------------------------------
*/
function is_utf8($string) {
// From http://w3.org/International/questions/qa-forms-utf-8.html
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string);
}
/*
-----------------------------------------------------------
Charset 을 변환하는 함수
-----------------------------------------------------------
iconv 함수가 있으면 iconv 로 변환하고
없으면 mb_convert_encoding 함수를 사용한다.
둘다 없으면 사용할 수 없다.
*/
function convert_charset($from_charset, $to_charset, $str) {
if( function_exists('iconv') )
return iconv($from_charset, $to_charset, $str);
elseif( function_exists('mb_convert_encoding') )
return mb_convert_encoding($str, $to_charset, $from_charset);
else
die("Not found 'iconv' or 'mbstring' library in server.");
}
$chat_member = Array();
$chat_member['name'] = $name;
$chat_member['last_id'] = $last_id;
$chat_member['chat_ss'] = $chat_ss;
$chat = new chat($cfg, $g4, $chat_member);
$chat->print_xml();
?>

감사합니다. 질문올려서 해결된 몇안되는 답이네요.
[http://lll.djcic.net]
[http://lll.djcic.net]