웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
제로보드 + MSN 메신저 (작성글에 리플이나 코멘트가 달리면 MSN으로 알려준다?)
2003.08.01 11:00
http://www.hbkr.net/msn주의 : 제가 PHP에 대해서는 잘 몰라서 소스가 무척 허접할수도 있습니다.
첨부파일은 MSN Messenger 프로토콜에 대한 내용입니다.
( 적용사이트 - http://www.hbkr.net )
제로보드와 MSN 메신저를 어떻게 잘 활용을 해볼까 생각하다가... 이런 방법을 생각해봤습니다.
회원가입시 입력하는 MSN ID에 공개여부가 공개로 설정된 회원들에 대해서
자신이 작성한 글에 리플이나 코멘트가 달릴때 MSN 메신저로 알려주는 방법...
그러기 위해서는 일단 자신의 사이트에서 로봇으로 사용할 MSN ID 를 하나 등록해야 합니다.
가장 기초적인 준비작업이 되겠죠?
(저같은 경우는 hbrobot@hotmail.com 으로 등록.. http://www.hbkr.net)
그리고 회원들은 hbrobot@hotmail.com를 대화상대로 추가해놓거나, 메세지를 받을수 있도록 설정이 되어 있어야 겠찌요.
이제. 제가 적용한 예를 중심으로 이야기 하겠습니다.
제로보드에서 게시물, 코멘트 등록과는 별개로 메세지를 주어야 하기때문에 새창으로 열어
멀리 숨겨놓았다가 -_-;; 메세지작업이 끝나면 닫아주는 방식으로 작성했습니다.
Hidden Frame을 이용하는 방법이나.. 기타 여러가지로 할수도 있겠죠...
일단 PHP파일을 만듭니다. 새창에서 호출될 파일이지요... 소스는 다음과 같습니다.
(http://navyism.com 의 navyism님의 '웹상에서 MSN 상태 표시하기' 소스를 많이 참조 하였습니다.
좋은 소스올려주신 navyism께 감사..)
<?
// DEFINE
define("__MSN_IP__" ,"messenger.hotmail.com"); //MSN Messenger Server Address
define("__MSN_PORT__" ,1863); //MSN Messenger Server Port
define("__MSN_VER__" ,0); //Version
define("__MSG_BUFFER__" ,100);
define("__MSG_RETRY_CNT__" ,30);
define("__ROBOT_ID__" ,"hbrobot@hotmail.com"); //Robot ID (Robot으로 사용할 ID)
define("__ROBOT_PW__" ,"******"); //Robot PassWord
define("__TRUE__" ,1);
$SEND_CNT = 0;
//응답을 받지 못할때 여러번 시도하기 위해 만든 함수들..
function ResetTry(&$retry){
$retry =0;
}
function CHKReTry(&$retry){
$retry++;
if($retry>__MSG_RETRY_CNT__){
echo "<script>window.close()</script>";
exit;
}
}
function WaitResponse(&$FP,&$MSG){
ResetTry($TRY_WAIT);
while(__TRUE__){
CHKReTry($TRY_WAIT);
$MSG = @fgets ($FP, __MSG_BUFFER__);
if($MSG){
break;
}
}
}
//접속을 위한 함수
function MSNConn (&$FP,&$REF_IP,&$REF_HASH,&$SEND_CNT)
{
@fclose ($FP);
$FP = @fsockopen ($REF_IP,__MSN_PORT__);
@fputs ($FP, "VER $SEND_CNT MSNP7 MSNP6 MSNP5 MSNP4 CVROrn");
WaitResponse($FP,$temp);
$SEND_CNT++;
@fputs ($FP, "INF " . ($SEND_CNT) . "rn");
WaitResponse($FP,$temp);
$SEND_CNT++;
@fputs ($FP, "USR " . ($SEND_CNT) . " MD5 I ".__ROBOT_ID__."rn");
WaitResponse($FP,$temp);
$REF_IP = eregi_replace ("^.+NS " , "", $temp);
$REF_IP = eregi_replace (":.+$" , "", $REF_IP);
if(eregi ("USR", $temp))
{
$REF_IP = "ok";
$REF_HASH = eregi_replace ("^.+MD5 S ", "", $temp);
}
}
//---------------------------------------------------------------------------
$msn_id = $HTTP_GET_VARS[id]; // Messege를 보낼 상대방 ID : $id 는 받아오는 값입니다
$msn_id = @trim ($msn_id);
//주소를 MSN Server로 설정하고 접속
$REF_IP = __MSN_IP__;
MSNConn ($FP_MSB,$REF_IP,$REF_HASH,$SEND_CNT);
for($i = 0; $i < 4; $i++)
{
if($REF_IP != "ok")
{
//접속후에 받아온 $REF_IP로 재접속
MSNConn ($FP_MSB,$REF_IP,$REF_HASH,$SEND_CNT);
}
else
{
break;
}
}
//패스워드
$pass = __ROBOT_PW__;
$pass = md5 (trim($REF_HASH).$pass);
@fputs ($FP_MSB, "USR $SEND_CNT MD5 S $passrn");
WaitResponse($FP_MSB,$temp);
$SEND_CNT++;
WaitResponse($FP_MSB,$temp);
@fputs ($FP_MSB, "CHG $SEND_CNT NLNrn");
WaitResponse($FP_MSB,$temp);
$SEND_CNT++;
@fputs ($FP_MSB, "XFR $SEND_CNT SBrn");
$temp = @fgets ($FP_MSB, __MSG_BUFFER__);
$SEND_CNT++;
while(__TRUE__)
{
if(!eregi ("XFR", $temp))
{
@fputs ($FP_MSB, "XFR $SEND_CNT SBrn");
$temp = @fgets ($FP_MSB, __MSG_BUFFER__);
}
else
{
break;
}
}
$temp = explode (" ", $temp);
$uid = $temp[5];
$host = explode (":", $temp[3]);
$RCV_USER = $host[0];
$FP_USR = @fsockopen ($RCV_USER,__MSN_PORT__);
@fputs ($FP_USR, "USR 0 ".__ROBOT_ID__." $uidrn");
WaitResponse($FP_USR,$temp);
ResetTry($TRY_CAL);
while(__TRUE__){
CHKReTry($TRY_CAL);
@fputs ($FP_USR, "CAL 1 $msn_idrn"); //상대방을 CALL
WaitResponse($FP_USR,$temp);
if(eregi ("^CAL", $temp) && eregi ("ring", $temp))
{
ResetTry($TRY_JOI);
while(__TRUE__)
{
CHKReTry($TRY_JOI);
WaitResponse($FP_USR,$temp);
if(eregi("JOI", $temp))break; //상대방이 대화에 응답하면 ..
}
// ★여기서 부터 메세지를 보내는 부분.. ------------------------------------
// 한글로 보내면 글자가 깨지는데 이부분에 대해서 해결 못함.. (되시는 분 알려주세요.. ㅠㅠ)
$sendMsg="HB-ROBOT Service!rnClick this URLrn".$sUrl; //내가 보낼 메세지 $sUrl 인자값
if($arg1)$sUrl=$sUrl."&".$arg1; // 인자값 추가.
//아래부분은 그대로 해서 보내야 함.. FN=%EA%B5%B4%EB%A6%BC; EF=B; CO=8000; CS=81; PF=32 이부분은 폰트관련 부분인듯..
$strbldmsg="MIME-Version: 1.0rn".
"Content-Type: text/plain; charset=UTF-8rn".
"X-MMS-IM-Format: FN=%EA%B5%B4%EB%A6%BC; EF=B; CO=8000; CS=81; PF=32rnrn".
$sendMsg;
$strmessage="MSG 2 N ".strlen($strbldmsg)."rn".$strbldmsg;
@fputs ($FP_USR,$strmessage); // 메세지를 보낸다.
$SEND_CNT++;
break;
}
}
// 종료...
@fclose ($FP_MSB);
@fclose ($FP_USR);
echo "<script>window.close()</script>";
?>
그 다음은.. lib.php 파일 마지막부분 쯤에 추가하는 함수입니다.
function HBRobotCall($sfather,$sid,$sno){ //$sfather 원본게시물, $sid 게시판아이디, $sno 게시물
if(($sid)&&($sno)&&($sfather)){
$sUrl = "http://www.hbkr.net/board/view.php?id=".$sid; //게시판 주소. "제로보드경로 + view.php?id=" 의 형태야겠져
$arg1 = "no=".$sno; //인자값 추가.. 게시물번호
$fdata=mysql_fetch_array(mysql_query("select ismember from zetyx_board"."_".$sid." where no='".$sfather."'"));
$member=member_info();
if (($fdata[ismember]>0)&&($member[no]!=$fdata[ismember])) { //자기가 작성한 글에 자신이 리플,코멘트달때는 타지않음.
$sdata = mysql_fetch_array(mysql_query("select msn from zetyx_member_table where no='".$fdata[ismember]."' and open_msn = '1'"));
if($sdata[msn]){
$Hb_Robot_URL = "http://www.hbkr.net/common/hbrobot.php?id="; // 위에 작성한 파일의 주소입니다.
// "파일주소?id="의 형태로 해야 다음줄에서.. -_-; (먼 설명을 이따위로 하는지..)
$Hb_Call = $Hb_Robot_URL.$sdata[msn]."&sUrl=".$sUrl."&arg1=".$arg1; //주소 + msnid + 게시판주소 + 게시판번호
// 새창으로 띄웁니다... 숨겨놓기 위해서 left=9999,top=9999 로 설정..
echo "<script>n";
echo "var HB_Robot = window.open('".$Hb_Call."','HB_Robot','width=1,height=1,left=9999,top=9999');n";
echo "</script>n";
}
}
}
음..
그다음은..
comment_ok.php 파일의 107번째 라인쯤에..
// 회원일 경우 해당 해원의 점수 주기
@mysql_query("update $member_table set point2=point2+1 where no='$member[no]'",$connect) or error(mysql_error());
라고 써있는 아래줄에
HBRobotCall($parent,$id,$no); // 라고 추가합니다.
그다음은...
write_ok.php 파일의 433 번째 라인쯤에
// 응답글 보내기일때;;
if($s_data[reply_mail]&&$s_data[email]) {
if($use_html<2) $memo=nl2br($memo);
$memo = stripslashes($memo);
zb_sendmail($use_html, $s_data[email], $s_data[name], $email, $name, $subject, $memo);
}
라고 써있는 아래줄에
HBRobotCall($father,$id,$no); //라고 추가합니다..
이렇게 하면 되겠지요..
음....
일단 제가 운영하는 사이트에 적용한대로 올려놓기는 했는데요.
제가 알고 있는 문제점들도 많이 있습니다.
예를들자면.. 여러명이 동시에 글을 작성하는 경우, 해당파일을 계속 여는경우,
해당 사용자가 MSN 로그인이 안되있는경우... - 이경우는 메세지가 보내지지 않고 끝나므로 별문제는 되지 않음..
하지만 여러사람이 함께 의견을 나누면 더 좋은 방법이 나오겠지요.
그래서.. 부족한 소스이지만 창피를 무릅쓰고 올려봅니다.
참고적으로다가 MSN 메신저를 잘 활용할수 있는 사용자+개발자 그룹 사이트를 만들고 있는 중인데요.
아직 미완성이지만.. MSN 메신저에 대해서 사용,개발 에 관련된 자료나, 내용들이 있으면
함께 공유할수 있으면 좋겠습니다. 관심있으신 분은 한번 방문해 주세요.
http://www.hbkr.net/msn
악플도 좋습니다. 리플 마니마니 달아주세요.
첨부파일은 MSN Messenger 프로토콜에 대한 내용입니다.
( 적용사이트 - http://www.hbkr.net )
제로보드와 MSN 메신저를 어떻게 잘 활용을 해볼까 생각하다가... 이런 방법을 생각해봤습니다.
회원가입시 입력하는 MSN ID에 공개여부가 공개로 설정된 회원들에 대해서
자신이 작성한 글에 리플이나 코멘트가 달릴때 MSN 메신저로 알려주는 방법...
그러기 위해서는 일단 자신의 사이트에서 로봇으로 사용할 MSN ID 를 하나 등록해야 합니다.
가장 기초적인 준비작업이 되겠죠?
(저같은 경우는 hbrobot@hotmail.com 으로 등록.. http://www.hbkr.net)
그리고 회원들은 hbrobot@hotmail.com를 대화상대로 추가해놓거나, 메세지를 받을수 있도록 설정이 되어 있어야 겠찌요.
이제. 제가 적용한 예를 중심으로 이야기 하겠습니다.
제로보드에서 게시물, 코멘트 등록과는 별개로 메세지를 주어야 하기때문에 새창으로 열어
멀리 숨겨놓았다가 -_-;; 메세지작업이 끝나면 닫아주는 방식으로 작성했습니다.
Hidden Frame을 이용하는 방법이나.. 기타 여러가지로 할수도 있겠죠...
일단 PHP파일을 만듭니다. 새창에서 호출될 파일이지요... 소스는 다음과 같습니다.
(http://navyism.com 의 navyism님의 '웹상에서 MSN 상태 표시하기' 소스를 많이 참조 하였습니다.
좋은 소스올려주신 navyism께 감사..)
<?
// DEFINE
define("__MSN_IP__" ,"messenger.hotmail.com"); //MSN Messenger Server Address
define("__MSN_PORT__" ,1863); //MSN Messenger Server Port
define("__MSN_VER__" ,0); //Version
define("__MSG_BUFFER__" ,100);
define("__MSG_RETRY_CNT__" ,30);
define("__ROBOT_ID__" ,"hbrobot@hotmail.com"); //Robot ID (Robot으로 사용할 ID)
define("__ROBOT_PW__" ,"******"); //Robot PassWord
define("__TRUE__" ,1);
$SEND_CNT = 0;
//응답을 받지 못할때 여러번 시도하기 위해 만든 함수들..
function ResetTry(&$retry){
$retry =0;
}
function CHKReTry(&$retry){
$retry++;
if($retry>__MSG_RETRY_CNT__){
echo "<script>window.close()</script>";
exit;
}
}
function WaitResponse(&$FP,&$MSG){
ResetTry($TRY_WAIT);
while(__TRUE__){
CHKReTry($TRY_WAIT);
$MSG = @fgets ($FP, __MSG_BUFFER__);
if($MSG){
break;
}
}
}
//접속을 위한 함수
function MSNConn (&$FP,&$REF_IP,&$REF_HASH,&$SEND_CNT)
{
@fclose ($FP);
$FP = @fsockopen ($REF_IP,__MSN_PORT__);
@fputs ($FP, "VER $SEND_CNT MSNP7 MSNP6 MSNP5 MSNP4 CVROrn");
WaitResponse($FP,$temp);
$SEND_CNT++;
@fputs ($FP, "INF " . ($SEND_CNT) . "rn");
WaitResponse($FP,$temp);
$SEND_CNT++;
@fputs ($FP, "USR " . ($SEND_CNT) . " MD5 I ".__ROBOT_ID__."rn");
WaitResponse($FP,$temp);
$REF_IP = eregi_replace ("^.+NS " , "", $temp);
$REF_IP = eregi_replace (":.+$" , "", $REF_IP);
if(eregi ("USR", $temp))
{
$REF_IP = "ok";
$REF_HASH = eregi_replace ("^.+MD5 S ", "", $temp);
}
}
//---------------------------------------------------------------------------
$msn_id = $HTTP_GET_VARS[id]; // Messege를 보낼 상대방 ID : $id 는 받아오는 값입니다
$msn_id = @trim ($msn_id);
//주소를 MSN Server로 설정하고 접속
$REF_IP = __MSN_IP__;
MSNConn ($FP_MSB,$REF_IP,$REF_HASH,$SEND_CNT);
for($i = 0; $i < 4; $i++)
{
if($REF_IP != "ok")
{
//접속후에 받아온 $REF_IP로 재접속
MSNConn ($FP_MSB,$REF_IP,$REF_HASH,$SEND_CNT);
}
else
{
break;
}
}
//패스워드
$pass = __ROBOT_PW__;
$pass = md5 (trim($REF_HASH).$pass);
@fputs ($FP_MSB, "USR $SEND_CNT MD5 S $passrn");
WaitResponse($FP_MSB,$temp);
$SEND_CNT++;
WaitResponse($FP_MSB,$temp);
@fputs ($FP_MSB, "CHG $SEND_CNT NLNrn");
WaitResponse($FP_MSB,$temp);
$SEND_CNT++;
@fputs ($FP_MSB, "XFR $SEND_CNT SBrn");
$temp = @fgets ($FP_MSB, __MSG_BUFFER__);
$SEND_CNT++;
while(__TRUE__)
{
if(!eregi ("XFR", $temp))
{
@fputs ($FP_MSB, "XFR $SEND_CNT SBrn");
$temp = @fgets ($FP_MSB, __MSG_BUFFER__);
}
else
{
break;
}
}
$temp = explode (" ", $temp);
$uid = $temp[5];
$host = explode (":", $temp[3]);
$RCV_USER = $host[0];
$FP_USR = @fsockopen ($RCV_USER,__MSN_PORT__);
@fputs ($FP_USR, "USR 0 ".__ROBOT_ID__." $uidrn");
WaitResponse($FP_USR,$temp);
ResetTry($TRY_CAL);
while(__TRUE__){
CHKReTry($TRY_CAL);
@fputs ($FP_USR, "CAL 1 $msn_idrn"); //상대방을 CALL
WaitResponse($FP_USR,$temp);
if(eregi ("^CAL", $temp) && eregi ("ring", $temp))
{
ResetTry($TRY_JOI);
while(__TRUE__)
{
CHKReTry($TRY_JOI);
WaitResponse($FP_USR,$temp);
if(eregi("JOI", $temp))break; //상대방이 대화에 응답하면 ..
}
// ★여기서 부터 메세지를 보내는 부분.. ------------------------------------
// 한글로 보내면 글자가 깨지는데 이부분에 대해서 해결 못함.. (되시는 분 알려주세요.. ㅠㅠ)
$sendMsg="HB-ROBOT Service!rnClick this URLrn".$sUrl; //내가 보낼 메세지 $sUrl 인자값
if($arg1)$sUrl=$sUrl."&".$arg1; // 인자값 추가.
//아래부분은 그대로 해서 보내야 함.. FN=%EA%B5%B4%EB%A6%BC; EF=B; CO=8000; CS=81; PF=32 이부분은 폰트관련 부분인듯..
$strbldmsg="MIME-Version: 1.0rn".
"Content-Type: text/plain; charset=UTF-8rn".
"X-MMS-IM-Format: FN=%EA%B5%B4%EB%A6%BC; EF=B; CO=8000; CS=81; PF=32rnrn".
$sendMsg;
$strmessage="MSG 2 N ".strlen($strbldmsg)."rn".$strbldmsg;
@fputs ($FP_USR,$strmessage); // 메세지를 보낸다.
$SEND_CNT++;
break;
}
}
// 종료...
@fclose ($FP_MSB);
@fclose ($FP_USR);
echo "<script>window.close()</script>";
?>
그 다음은.. lib.php 파일 마지막부분 쯤에 추가하는 함수입니다.
function HBRobotCall($sfather,$sid,$sno){ //$sfather 원본게시물, $sid 게시판아이디, $sno 게시물
if(($sid)&&($sno)&&($sfather)){
$sUrl = "http://www.hbkr.net/board/view.php?id=".$sid; //게시판 주소. "제로보드경로 + view.php?id=" 의 형태야겠져
$arg1 = "no=".$sno; //인자값 추가.. 게시물번호
$fdata=mysql_fetch_array(mysql_query("select ismember from zetyx_board"."_".$sid." where no='".$sfather."'"));
$member=member_info();
if (($fdata[ismember]>0)&&($member[no]!=$fdata[ismember])) { //자기가 작성한 글에 자신이 리플,코멘트달때는 타지않음.
$sdata = mysql_fetch_array(mysql_query("select msn from zetyx_member_table where no='".$fdata[ismember]."' and open_msn = '1'"));
if($sdata[msn]){
$Hb_Robot_URL = "http://www.hbkr.net/common/hbrobot.php?id="; // 위에 작성한 파일의 주소입니다.
// "파일주소?id="의 형태로 해야 다음줄에서.. -_-; (먼 설명을 이따위로 하는지..)
$Hb_Call = $Hb_Robot_URL.$sdata[msn]."&sUrl=".$sUrl."&arg1=".$arg1; //주소 + msnid + 게시판주소 + 게시판번호
// 새창으로 띄웁니다... 숨겨놓기 위해서 left=9999,top=9999 로 설정..
echo "<script>n";
echo "var HB_Robot = window.open('".$Hb_Call."','HB_Robot','width=1,height=1,left=9999,top=9999');n";
echo "</script>n";
}
}
}
음..
그다음은..
comment_ok.php 파일의 107번째 라인쯤에..
// 회원일 경우 해당 해원의 점수 주기
@mysql_query("update $member_table set point2=point2+1 where no='$member[no]'",$connect) or error(mysql_error());
라고 써있는 아래줄에
HBRobotCall($parent,$id,$no); // 라고 추가합니다.
그다음은...
write_ok.php 파일의 433 번째 라인쯤에
// 응답글 보내기일때;;
if($s_data[reply_mail]&&$s_data[email]) {
if($use_html<2) $memo=nl2br($memo);
$memo = stripslashes($memo);
zb_sendmail($use_html, $s_data[email], $s_data[name], $email, $name, $subject, $memo);
}
라고 써있는 아래줄에
HBRobotCall($father,$id,$no); //라고 추가합니다..
이렇게 하면 되겠지요..
음....
일단 제가 운영하는 사이트에 적용한대로 올려놓기는 했는데요.
제가 알고 있는 문제점들도 많이 있습니다.
예를들자면.. 여러명이 동시에 글을 작성하는 경우, 해당파일을 계속 여는경우,
해당 사용자가 MSN 로그인이 안되있는경우... - 이경우는 메세지가 보내지지 않고 끝나므로 별문제는 되지 않음..
하지만 여러사람이 함께 의견을 나누면 더 좋은 방법이 나오겠지요.
그래서.. 부족한 소스이지만 창피를 무릅쓰고 올려봅니다.
참고적으로다가 MSN 메신저를 잘 활용할수 있는 사용자+개발자 그룹 사이트를 만들고 있는 중인데요.
아직 미완성이지만.. MSN 메신저에 대해서 사용,개발 에 관련된 자료나, 내용들이 있으면
함께 공유할수 있으면 좋겠습니다. 관심있으신 분은 한번 방문해 주세요.
http://www.hbkr.net/msn
악플도 좋습니다. 리플 마니마니 달아주세요.
댓글 18
-
앳플군
2003.08.01 12:02
urlencode 사용하시길... -
HungryMania
2003.08.01 12:51
// 앳플군 님
urlencode를 어느부분에 사용하란 말씀이신가요?
window open 할때 말씀인가요? -
holies
2003.08.01 15:13
한글 처리 부분 말씀하시는 듯 하네요. 저도 보고 바로 urlencode가 생각났는데. -
HungryMania
2003.08.01 15:22
아.. 그렇군요.. 테스트 해봐야 겠네요.. -
holies
2003.08.01 15:35
참... 그리구 보안을 좀 더 신경쓰시면 되겠네요. 저 상태에서는 로그온하지 않아도 주소를 직접 쳐서 MSN 메세지를 보낼 수 있으니까요. 본의 아니게 머리 좋은 사람에게 악용될 여지가 -_-; -
HungryMania
2003.08.01 17:08
이렇게 해서 테스트 해보니
$sendMsg= urlencode("HB-ROBOT Service!r다음 URL을 클릭하세요.rn");
아래와 같이 메세지가 오는 군요.. ㅡㅡ;
HB-ROBOT+Service%21%0D%5C%B4%D9%C0%BD+URL%C0%BB+%C5%AC%B8%AF%C7%CF%BC%BC%BF%E4.%0D%0A -
라지엘
2003.08.01 17:37
urlencode 는 HungryMania 님과 같은 결과가 나옵니다=_=; Content-Type 헤더에서 charset 이 UTF-8 로 잡혀있길래 혹시나 해서 utf8_encode 로 보내봤지만 역시 결과는 마찬가지더군요.
그리고 테스트 결과 이 스크립트는 Robot ID 로 로그인해서, 그 ID 에 등록된 사용자에게 보내는 형태입니다. (현재 로그인 중이 ID 를 넣으면 '다른 컴퓨터에서 로그인하여 종료합니다' 라는 메세지와 함께 쓰고 계시던 메신저 창이 로그아웃되어버립니다.) 또한 그 ID(Robot) 에 등록되어 있지 않은 상대, 혹은 해당 아이디에서 오프라인으로 보이는 상대에게는 메세지 전송이 되지 않습니다. 위에서 holies 님께서 우려하셨던것과 같은 악용의 여지는 없는듯합니다 :) -
HungryMania
2003.08.01 18:06
"Content-Type: text/plain; charset=UTF-8rn" 의 charset은 서버와 주고받는 통신상의 charset을 의미하는것 같구요.
여기에..
X-MMS-IM-Format: FN=%EA%B5%B4%EB%A6%BC; EF=B; CO=8000; CS=81; PF=32rnrn
X-MMS-IM-Format:
Font Name (FN) , Effects (EF), Color (CO), Character Set (CS),Pitch and Family (PF),Right to Left (RL)
이 CS 값이 Character Set 인것 같은데요.
이부분에서 CS=81 이 의미하는것이 한글(완성형) 이더군요..
(참조 : http://www.hypothetic.org/docs/msn/switchboard/plaintext.php ) ..
어떻게 처리 해야 할지 해결되지는 않았지만..
다른분들도 보시면 참고가 될것 같기에 올립니다... -
holies
2003.08.01 19:21
Robot ID 에 등록 되어 있지 않으면 메세지 전송이 안 되는 건가요...? 음... 해 봐야겠네요. 아리송~ -
holies
2003.08.01 19:34
큭... 한글처리 해결되네요. iconv라는 함수를 사용해야 하지만....
iconv('euc-kr', 'utf-8', $string)으로 utf-8 형식으로 변환해서 전송하면 되네요.
그리고 FN 부분을 역으로 해석하면 '굴림'으로 나와요.
'%EA%B5%B4%EB%A6%BC' == urlencode('euc-kr', 'utf-8', '굴림'); -
HungryMania
2003.08.01 20:28
오우... 그렇군요...
저도 당장 바꿔봐야 겠습니다...
그런데.. 사실.. 새창으로 띄우는것이 아니라.
내부적으로 처리를 해볼려고 했었는데.. 잘 안되었거든요..
무슨 좋은 방법이 없을까요? -
holies
2003.08.01 20:31
위의 위에 쓴 제 코멘트에 urlencode('euc-kr', 'utf-8', '굴림') => urlencode(iconv('euc-kr', 'utf-8', '굴림'))
^^; -
HungryMania
2003.08.01 20:33
Fatal error: Call to undefined function: iconv()
으음.... -
HungryMania
2003.08.01 20:36
http://kr2.php.net/iconv
이 모듈은 iconv 라이브러리 함수의 인터페이스를 내포한다. 이 모듈 내에 정의된 함수를 사용하기 위해서는 --with-iconv 옵션을 사용하여 PHP 인터프리터를 컴파일해야 한다. 그러기 위해서는, 표준 C 라이브러리에서 iconv() 함수를 갖고 있거나 libiconv가 설치되어 있어야 한다. libiconv library is available from http://www.gnu.org/software/libiconv/.
라고 써있네요...
그런데 제가 운영하는 사이트는 웹호스팅을 받고 있어서..... ㅡㅡ;; -
HungryMania
2003.08.01 20:49
//holies
Robot ID에 등록이 되어있지 않으면 전송이 안되는건 아니구여
Robot ID에게서 메세지를 받을수 있도록 설정된 msn 사용자,
즉,, Robot ID를 대화상대로 추가했거나,
'모르는대상에게 메세지를 받지 않음' 이라는 설정을 하지 않은 사용자
들에게 메세지를 전송할수 있는거지요... -
TheMics
2003.08.04 18:18
str2uni가 여기서도 먹힐라나; -
HungryMania
2003.08.06 12:28
호스팅 업체에 압박을 가하여, iconv 로 ^^;; -
열반Ⅳ
2003.08.23 15:44
//HungryMania
님 홈에서만 적용 되도록 되었나요?? 저 제로보드 쓰는데..경로나 마에스큐엘 테이블 네임 등이 제로보드꺼랑 약간 틀린 것 같은데...
저는 초짜라 잘 모르거든요..변수 부분이 제로 보드랑 안 맞나?? 암튼 지금 경로 설정이 점 이상하게 나와서여...알려주셈..ㅠ_ㅠ
제목 | 글쓴이 | 날짜 |
---|---|---|
동적으로 Extensions(library) 로딩하기 | impre | 2003.09.20 |
include 할시에 주의사항..(경로설정관련) [10] | 피너츠 | 2003.09.14 |
지정한만큼 암호화/해독 하기 [24] | 뒹굴리스트 | 2003.09.10 |
모든파일을 리스트로 만들기; [10] | 플로렐라 | 2003.09.10 |
군대간 친구 남은날짜 구하기 2(복무기간 단축에 따른 수정) [8] | 신민경 | 2003.09.02 |
자료실에 쓸만한 자료용량 환산 [7] | 한승진 | 2003.09.01 |
php 랜덤 이미지 디렉토리 검색으로 편하게.. [3] | 꺼노 | 2003.08.28 |
웹디자이너와 프로그래머가 사이 좋게 코딩하는 방법 [50] | 마이템플릿 | 2003.08.13 |
개판 오분전 정규식(1) | 미친개 | 2003.08.07 |
개판 오분전 정규식(2) [5] | 미친개 | 2003.08.07 |
개판 오분전 정규식(3) [2] | 미친개 | 2003.08.07 |
개판 오분전 정규식(4) | 미친개 | 2003.08.07 |
$i++ !== $i += 1 [14] | 플로렐라 | 2003.08.04 |
체널을 응용해서 tmain.php?tdb=test&db=src 식으로 쓰기 [12] | 9000㎒ | 2003.08.01 |
제로보드 + MSN 메신저 (작성글에 리플이나 코멘트가 달리면 MSN으로 알려준다?) [18] | HungryMania | 2003.08.01 |
스킨 시스템 사용하기 [2] | 김규백 | 2003.07.25 |
다른 사이트에 있는 파일 읽어오기 [50] | 김규백 | 2003.07.25 |
초간단 php 랜덤 이미지 및 랜덤 배경이미지 소스 [6] | 거금도 | 2003.07.24 |
'와 "의 속도 차이?! [6] | holies | 2003.07.12 |
Thumbnail 생성하기 - 수정^^; [9] | holies | 2003.07.11 |