실시간으로 쪽지왔음 경고창 띄워주기....... 정보
실시간으로 쪽지왔음 경고창 띄워주기.......
본문
이전에 다른 분이 공개한 부분도 있지만
조금 다른 방식으로 만드는 방법에 대해 정리했습니다.
이방식은 현재 팔봉닷컴에 http://8bong.com 적용중입니다.
먼저 적용하는 방법을 말씀드리겠습니다.
1. tail.sub.php 를 에디터로 엽니다.
<iframe width=0 height=0 name='hiddenframe' style='display:none;'></iframe>
바로 아래에
<iframe width=0 height=0 name='Yhiddenframe' id='Yhiddenframe' style='display:none;'></iframe>
<? if (!empty($member['mb_id'])) { ?>
<script>
/**
* Author : MC 심새 (*** 개인정보보호를 위한 이메일주소 노출방지 ***)
* Make Date : 2006-09-22
* comment : ajax의 xml을 javascript 객체형식으로 자동 변환
**/
function AjaxDataControl(){
this.xmlHttp = null;
this.getHttpRequest = function(URL, object){
var xmlHttp = this.xmlHttp;
var xmlData = null;
// FF일 경우 window.XMLHttpRequest 객체가 존재한다.
if(!xmlHttp){
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
else {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
this.xmlHttp = xmlHttp;
}
xmlHttp.open('GET', URL, true);
xmlHttp.onreadystatechange = function() {
// readyState 가 4 고 status 가 200 일 경우 올바르게 가져옴
if(xmlHttp.readyState==4 && xmlHttp.status == 200 && xmlHttp.statusText=='OK') {
var xmlData = xmlHttp.responseXML;
object.setXmlData(xmlData);
}
}
xmlHttp.send('');
}
this.getXmlRootNode = function(nodes, rootName){
var rootNode = nodes.getElementsByTagName(rootName);
return rootNode;
}
}
function AjaxObject(){
this.ac = null;
this.xmlData = null;
this.rootName = null;
this.functionName = null;
this.inArray = function(array, value){
var result = false;
for(var i=0; i < array.length; i++){
if(array[i] == value){
result = true;
break;
}
}
return result;
}
this.getHttpRequest = function(Url, functionName){
if(this.ac == null){
this.ac = new AjaxDataControl();
}
this.functionName = functionName;
this.ac.getHttpRequest(Url, this);
}
this.setMakeObject = function(nodeData){
var resultObject = new Object;
resultObject.length = 0;
if(nodeData.hasChildNodes() ){
var nodeChilds = nodeData.childNodes;
var nodeNameList = new Array();
var isNodeChilds = false;
for(var i = 0; i<nodeChilds.length;i++){
if(nodeChilds[i].nodeType == '1'){
var returnObj = this.setMakeObject(nodeChilds[i] );
if( typeof(returnObj) == "string"){
resultObject[ nodeChilds[i].nodeName ] = this.setMakeObject(nodeChilds[i] );
resultObject.length += 1;
}
else{
if(resultObject[ nodeChilds[i].nodeName ]){
resultObject[ nodeChilds[i].nodeName ].push( returnObj );
}
else{
resultObject[ nodeChilds[i].nodeName ] = new Array();
resultObject[ nodeChilds[i].nodeName ].push( returnObj );
resultObject.length += 1;
}
}
isNodeChilds = true;
}
}
if(!isNodeChilds){
resultObject = nodeChilds[0].nodeValue;
}
else{
//처리없음
}
}
return resultObject;
}
this.setMakeControl = function(){
if(this.xmlData != null){
var rootNode = this.ac.getXmlRootNode(this.xmlData, this.rootName);
var list = this.setMakeObject(rootNode[0]);
eval( this.functionName+"(list)" );
}
}
this.setXmlData = function(data){
this.xmlData = data;
this.rootName = data.documentElement.nodeName;
this.setMakeControl();
}
}
/* Ajax에서 리턴받은 XML NODE를 JAVASCRIPT OBJECT 형식으로 변환 End */
//이하 수정해서 사용하세요
function alert_memo(list){
if (list['item'] && list['item'].length > 0){
for (var i = 0; i < list['item'].length; i++){
alert(list['item'][i]['nick'] + '님으로부터 쪽지가 전달되었습니다.');
document.getElementById('Yhiddenframe').src = g4_path+"/xml_del.php";
}
}
}
function start_check(){
var aObj = new AjaxObject; // AjaxList 선언
aObj.getHttpRequest("<?=$g4['path']?>/xml/<?=$member['mb_id']?>.php", "alert_memo"); //참조Url, 리턴 함수명
setTimeout("start_check()", 5000);//천분의 1초 단위 5000 이면 5초
}
start_check();
</script>
<? } ?>
그대로 복사해서 넣습니다.
2. 그누보드 설치 디렉토리에 xml이라는 디렉토리를 만들고, 퍼미션을 777로 줍니다.
3. head.sub.php를 에디터로 열고
alert($tmp_mb['mb_nick'] . '님으로부터 쪽지가 전달되었습니다.', $_SERVER['REQUEST_URI']);
이부분을 주석을 답니다.
4. config.php와 같은 위치에 xml_del.php를 만들고 아래내용을 넣습니다.
<?php
include_once './_common.php';
$xml_file = $g4['path'] . "/xml/" . $member['mb_id'] . ".php";
$xml_text = '<?php
Header("Content-type: text/xml");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo "<?xml version=\"1.0\" encoding=\"" . $g4['charset'] . "\" ?>\n";
echo "<root>\n";
echo "</root>\n";
?>';
Ywrite_lock($xml_file, $xml_text);
?>
5. lib/common.lib.php를 열고 아래 함수를 추가합니다.
function Ywrite_lock($save_file, $save_text){
$fp = @fopen($save_file, 'w');
if (empty($fp)) {
echo "디렉토리의 퍼미션을 확인하세요";
exit;
}
if (flock($fp, LOCK_EX)) {
@fwrite($fp, $save_text);
@fclose($fp);
@chmod($save_file, 0777);
@flock($fp, LOCK_UN); // release the lock
}
}
6. bbs/memo_form_update.php 를 열고
// 실시간 쪽지 알림 기능
$sql = " update $g4[member_table]
set mb_memo_call = '$member[mb_id]'
where mb_id = '$mb_list[$i]' ";
sql_query($sql);
라인 다음에 아래 내용을 그대로 복사해서 붙여넣습니다.
/*유창화가 xml생성하는 부분 넣음*/
$xml_file = $g4['path'] . "/xml/" . $mb_list[$i] . ".php";
$xml_text = '<?php
Header("Content-type: text/xml");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo "<?xml version=\"1.0\" encoding=\"euc-kr\" ?>\n";
echo "<root>\n";
echo "<item>\n";
echo " <nick>' . $member['mb_nick'] . '</nick>\n";
echo "</item>\n";
echo "</root>\n";
?>';
Ywrite_lock($xml_file, $xml_text);
조금 다른 방식으로 만드는 방법에 대해 정리했습니다.
이방식은 현재 팔봉닷컴에 http://8bong.com 적용중입니다.
먼저 적용하는 방법을 말씀드리겠습니다.
1. tail.sub.php 를 에디터로 엽니다.
<iframe width=0 height=0 name='hiddenframe' style='display:none;'></iframe>
바로 아래에
<iframe width=0 height=0 name='Yhiddenframe' id='Yhiddenframe' style='display:none;'></iframe>
<? if (!empty($member['mb_id'])) { ?>
<script>
/**
* Author : MC 심새 (*** 개인정보보호를 위한 이메일주소 노출방지 ***)
* Make Date : 2006-09-22
* comment : ajax의 xml을 javascript 객체형식으로 자동 변환
**/
function AjaxDataControl(){
this.xmlHttp = null;
this.getHttpRequest = function(URL, object){
var xmlHttp = this.xmlHttp;
var xmlData = null;
// FF일 경우 window.XMLHttpRequest 객체가 존재한다.
if(!xmlHttp){
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
else {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
this.xmlHttp = xmlHttp;
}
xmlHttp.open('GET', URL, true);
xmlHttp.onreadystatechange = function() {
// readyState 가 4 고 status 가 200 일 경우 올바르게 가져옴
if(xmlHttp.readyState==4 && xmlHttp.status == 200 && xmlHttp.statusText=='OK') {
var xmlData = xmlHttp.responseXML;
object.setXmlData(xmlData);
}
}
xmlHttp.send('');
}
this.getXmlRootNode = function(nodes, rootName){
var rootNode = nodes.getElementsByTagName(rootName);
return rootNode;
}
}
function AjaxObject(){
this.ac = null;
this.xmlData = null;
this.rootName = null;
this.functionName = null;
this.inArray = function(array, value){
var result = false;
for(var i=0; i < array.length; i++){
if(array[i] == value){
result = true;
break;
}
}
return result;
}
this.getHttpRequest = function(Url, functionName){
if(this.ac == null){
this.ac = new AjaxDataControl();
}
this.functionName = functionName;
this.ac.getHttpRequest(Url, this);
}
this.setMakeObject = function(nodeData){
var resultObject = new Object;
resultObject.length = 0;
if(nodeData.hasChildNodes() ){
var nodeChilds = nodeData.childNodes;
var nodeNameList = new Array();
var isNodeChilds = false;
for(var i = 0; i<nodeChilds.length;i++){
if(nodeChilds[i].nodeType == '1'){
var returnObj = this.setMakeObject(nodeChilds[i] );
if( typeof(returnObj) == "string"){
resultObject[ nodeChilds[i].nodeName ] = this.setMakeObject(nodeChilds[i] );
resultObject.length += 1;
}
else{
if(resultObject[ nodeChilds[i].nodeName ]){
resultObject[ nodeChilds[i].nodeName ].push( returnObj );
}
else{
resultObject[ nodeChilds[i].nodeName ] = new Array();
resultObject[ nodeChilds[i].nodeName ].push( returnObj );
resultObject.length += 1;
}
}
isNodeChilds = true;
}
}
if(!isNodeChilds){
resultObject = nodeChilds[0].nodeValue;
}
else{
//처리없음
}
}
return resultObject;
}
this.setMakeControl = function(){
if(this.xmlData != null){
var rootNode = this.ac.getXmlRootNode(this.xmlData, this.rootName);
var list = this.setMakeObject(rootNode[0]);
eval( this.functionName+"(list)" );
}
}
this.setXmlData = function(data){
this.xmlData = data;
this.rootName = data.documentElement.nodeName;
this.setMakeControl();
}
}
/* Ajax에서 리턴받은 XML NODE를 JAVASCRIPT OBJECT 형식으로 변환 End */
//이하 수정해서 사용하세요
function alert_memo(list){
if (list['item'] && list['item'].length > 0){
for (var i = 0; i < list['item'].length; i++){
alert(list['item'][i]['nick'] + '님으로부터 쪽지가 전달되었습니다.');
document.getElementById('Yhiddenframe').src = g4_path+"/xml_del.php";
}
}
}
function start_check(){
var aObj = new AjaxObject; // AjaxList 선언
aObj.getHttpRequest("<?=$g4['path']?>/xml/<?=$member['mb_id']?>.php", "alert_memo"); //참조Url, 리턴 함수명
setTimeout("start_check()", 5000);//천분의 1초 단위 5000 이면 5초
}
start_check();
</script>
<? } ?>
그대로 복사해서 넣습니다.
2. 그누보드 설치 디렉토리에 xml이라는 디렉토리를 만들고, 퍼미션을 777로 줍니다.
3. head.sub.php를 에디터로 열고
alert($tmp_mb['mb_nick'] . '님으로부터 쪽지가 전달되었습니다.', $_SERVER['REQUEST_URI']);
이부분을 주석을 답니다.
4. config.php와 같은 위치에 xml_del.php를 만들고 아래내용을 넣습니다.
<?php
include_once './_common.php';
$xml_file = $g4['path'] . "/xml/" . $member['mb_id'] . ".php";
$xml_text = '<?php
Header("Content-type: text/xml");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo "<?xml version=\"1.0\" encoding=\"" . $g4['charset'] . "\" ?>\n";
echo "<root>\n";
echo "</root>\n";
?>';
Ywrite_lock($xml_file, $xml_text);
?>
5. lib/common.lib.php를 열고 아래 함수를 추가합니다.
function Ywrite_lock($save_file, $save_text){
$fp = @fopen($save_file, 'w');
if (empty($fp)) {
echo "디렉토리의 퍼미션을 확인하세요";
exit;
}
if (flock($fp, LOCK_EX)) {
@fwrite($fp, $save_text);
@fclose($fp);
@chmod($save_file, 0777);
@flock($fp, LOCK_UN); // release the lock
}
}
6. bbs/memo_form_update.php 를 열고
// 실시간 쪽지 알림 기능
$sql = " update $g4[member_table]
set mb_memo_call = '$member[mb_id]'
where mb_id = '$mb_list[$i]' ";
sql_query($sql);
라인 다음에 아래 내용을 그대로 복사해서 붙여넣습니다.
/*유창화가 xml생성하는 부분 넣음*/
$xml_file = $g4['path'] . "/xml/" . $mb_list[$i] . ".php";
$xml_text = '<?php
Header("Content-type: text/xml");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo "<?xml version=\"1.0\" encoding=\"euc-kr\" ?>\n";
echo "<root>\n";
echo "<item>\n";
echo " <nick>' . $member['mb_nick'] . '</nick>\n";
echo "</item>\n";
echo "</root>\n";
?>';
Ywrite_lock($xml_file, $xml_text);
추천
5
5
댓글 27개

원리는 이렇습니다.
쪽지를 보낼때 받는 사람의 아이디를 가지고 xml파일을 만듭니다.
그 xml파일에는 보낸 사람의 닉이 저장됩니다.
그리고 모든 페이지에선
로그인 되었을 경우
5초당 자신의 아이디로 생성된 xml파일이 있는지 체크하고, 내용이 있는지 확인합니다.
내용이 있으면 그 닉네임을 경고창으로 뛰워주고
안보이는 히든 프레임으로 해당 xml파일의 내용을 비워줍니다.
Ajax부분은 phpschool의 MC 심새 님의 팁을 사용하였습니다.
쪽지를 보낼때 받는 사람의 아이디를 가지고 xml파일을 만듭니다.
그 xml파일에는 보낸 사람의 닉이 저장됩니다.
그리고 모든 페이지에선
로그인 되었을 경우
5초당 자신의 아이디로 생성된 xml파일이 있는지 체크하고, 내용이 있는지 확인합니다.
내용이 있으면 그 닉네임을 경고창으로 뛰워주고
안보이는 히든 프레임으로 해당 xml파일의 내용을 비워줍니다.
Ajax부분은 phpschool의 MC 심새 님의 팁을 사용하였습니다.

장점이라면
기존 공개된 실시간 쪽지는 계속해서 디비에 쿼리를 날려야 하지만
이것은 그럴 필요가 없기 때문에
시스템에 거의 무리가 없는 방식입니다.
기존 공개된 실시간 쪽지는 계속해서 디비에 쿼리를 날려야 하지만
이것은 그럴 필요가 없기 때문에
시스템에 거의 무리가 없는 방식입니다.

별론가요?
고생하셨습니다.
파싱하는데 너무너무 힘들어서.. 포기했었는디..ㅋ
커서 핸드만 나타나지 않으면 거의 죽음이겠네요...
echo "<?xml version=\"1.0\" encoding=\"euc-kr\" ?>\n";
xml 은 기본으로 utf-8 같구요.. 상관없겠지만..
파싱하는데 너무너무 힘들어서.. 포기했었는디..ㅋ
커서 핸드만 나타나지 않으면 거의 죽음이겠네요...
echo "<?xml version=\"1.0\" encoding=\"euc-kr\" ?>\n";
xml 은 기본으로 utf-8 같구요.. 상관없겠지만..
걍 memo.xml 하나로 통합하고
파일[$i] 로 개인별로 쪼개면 어떨까요?
파일[$i] 로 개인별로 쪼개면 어떨까요?

생각해볼만한 내용입니다.
그러나 그방식은 그다지 효율적이지 못합니다.
이유는
해당 아이디 라인을 찾고
해당 아이디 라인을 지워주는 과정보단
아이디로 된파일 열어서
한줄만 체크해보면 되는 과정이
자원을 더 효율적으로 사용할수 있습니다.
그러나 그방식은 그다지 효율적이지 못합니다.
이유는
해당 아이디 라인을 찾고
해당 아이디 라인을 지워주는 과정보단
아이디로 된파일 열어서
한줄만 체크해보면 되는 과정이
자원을 더 효율적으로 사용할수 있습니다.
감사합니다.^^
일단 적용해봅니다.
며칠 땡땡이 쳤는데 숙제를 하나 받아든 느낌입니다.
죄송합니다만 시간되신다면,
http://www.sir.co.kr/bbs/tb.php/pl_php/120
코멘트에 붙인 내용에 문제가 없는지 한번 봐주시면 고맙겠습니다.
ps)
불여우에서 멀티탭으로 열어놓고 적용해보다 깜짝 놀랐습니다.
당연하겠지만 열려있는 해당 사이트 탭 숫자만큼 모두 경고창을 띄우는군요.
이것을 제어가 가능한지요?
일단 적용해봅니다.
며칠 땡땡이 쳤는데 숙제를 하나 받아든 느낌입니다.
죄송합니다만 시간되신다면,
http://www.sir.co.kr/bbs/tb.php/pl_php/120
코멘트에 붙인 내용에 문제가 없는지 한번 봐주시면 고맙겠습니다.
ps)
불여우에서 멀티탭으로 열어놓고 적용해보다 깜짝 놀랐습니다.
당연하겠지만 열려있는 해당 사이트 탭 숫자만큼 모두 경고창을 띄우는군요.
이것을 제어가 가능한지요?

음 제가 테스트 해보긴 그런 경우는 발생하지 않는데
xml_del.php가 생성되어있는지 확인하시구요. 경로도 확인하시구요.
그누보드 최상위 디렉토리에 위치해야합니다.
제대로 잘 존재한다면.......
아래 함수를 아래와 같이 순서를 바꿔서 넣어보세요.
function alert_memo(list){
if (list['item'] && list['item'].length > 0){
for (var i = 0; i < list['item'].length; i++){
document.getElementById('Yhiddenframe').src = g4_path+"/xml_del.php";
alert(list['item'][i]['nick'] + '님으로부터 쪽지가 전달되었습니다.');
}
}
}
xml_del.php가 생성되어있는지 확인하시구요. 경로도 확인하시구요.
그누보드 최상위 디렉토리에 위치해야합니다.
제대로 잘 존재한다면.......
아래 함수를 아래와 같이 순서를 바꿔서 넣어보세요.
function alert_memo(list){
if (list['item'] && list['item'].length > 0){
for (var i = 0; i < list['item'].length; i++){
document.getElementById('Yhiddenframe').src = g4_path+"/xml_del.php";
alert(list['item'][i]['nick'] + '님으로부터 쪽지가 전달되었습니다.');
}
}
}
으으, 죄송합니다.^^
실행중인 모든 창마다 경고창이 뜨는것이 당연한것인데 제가 잘못된 질문을 드렸습니다.
우매한 질문에 성의껏 답변해주셔서 거듭 고맙습니다.
실행중인 모든 창마다 경고창이 뜨는것이 당연한것인데 제가 잘못된 질문을 드렸습니다.
우매한 질문에 성의껏 답변해주셔서 거듭 고맙습니다.

아니요 잘 못된 질문은 아닙니다.
경고창을 띄운다음 해당 내용을 지우기 때문에
다른 탭에서도 똑같이 경고창이 뜨는 것은 잘 못된것입니다.
제가 보기에는 제가 위에서 언급한데로
순서를 바꿔서 해보시거나
xml_del.php가 존재하는지 경로가 올바른지 확인해 보시기 바랍니다.
경고창을 띄운다음 해당 내용을 지우기 때문에
다른 탭에서도 똑같이 경고창이 뜨는 것은 잘 못된것입니다.
제가 보기에는 제가 위에서 언급한데로
순서를 바꿔서 해보시거나
xml_del.php가 존재하는지 경로가 올바른지 확인해 보시기 바랍니다.
그렇군요!!
순서를 바꿔주니 경고창이 정상적으로 한번만 뜹니다.^^
친절하게 챙겨주셔서 감사합니다.
순서를 바꿔주니 경고창이 정상적으로 한번만 뜹니다.^^
친절하게 챙겨주셔서 감사합니다.

좋은 팁이네요 ^^
감사합니다.
감사합니다.

xml파일을 왜 php로 만드냐?
에 대해 의문이 있는 분도 계실것같습니다.
파일로 저장하는데 굳이 php로 xml을 뿌려줄 필요가 있는가.......
네. 그것은 브라우져 캐쉬 때문에 그렇게 처리했습니다.
페이지내에서 이동없이 스크립트로 해당 xml파일을 5초에 한번씩 읽어오는데,
단순하게 xml로 저장하면 내용이 없어졋음에도 불구하고
계속 이전것을 가져와서 경고창을 뿌려대는 경우가 발생했습니다.
그래서 브라우져 캐쉬가 적용되지 않도록
php에 헤더를 추가해서 xml로 출력하게 한것입니다.
에 대해 의문이 있는 분도 계실것같습니다.
파일로 저장하는데 굳이 php로 xml을 뿌려줄 필요가 있는가.......
네. 그것은 브라우져 캐쉬 때문에 그렇게 처리했습니다.
페이지내에서 이동없이 스크립트로 해당 xml파일을 5초에 한번씩 읽어오는데,
단순하게 xml로 저장하면 내용이 없어졋음에도 불구하고
계속 이전것을 가져와서 경고창을 뿌려대는 경우가 발생했습니다.
그래서 브라우져 캐쉬가 적용되지 않도록
php에 헤더를 추가해서 xml로 출력하게 한것입니다.

멋진팁~! 정말 감사드립니다.
한수 배우고 갑니다. 감사합니다~
좋은 팁 감사합니다.
근데 전 왜 경고창이 계속 뜰까요..
document.getElementById('Yhiddenframe').src = g4_path+"/xml_del.php";
alert(list['item'][i]['nick'] + '님으로부터 쪽지가 전달되었습니다.');
위에처럼 순서도 바꿔봤는데도 계속 그러네요.. ㅠㅠ
xml_del.php 경로도 맞는데.. 왜그럴까요??
근데 전 왜 경고창이 계속 뜰까요..
document.getElementById('Yhiddenframe').src = g4_path+"/xml_del.php";
alert(list['item'][i]['nick'] + '님으로부터 쪽지가 전달되었습니다.');
위에처럼 순서도 바꿔봤는데도 계속 그러네요.. ㅠㅠ
xml_del.php 경로도 맞는데.. 왜그럴까요??

Yhiddenframe 을 테일서브에 넣어주셨습니까?
네.. 위에 있는거 그대로 넣었는데요.. ㅠㅠ
이상한게... xml_del.php 안에다가 alert 창 띄우는 스크립트 넣어봤는데 안찍히네요..xml_del을 호출을 못하는거 같은데요.. 왜 그럴까요??
이상한게... xml_del.php 안에다가 alert 창 띄우는 스크립트 넣어봤는데 안찍히네요..xml_del을 호출을 못하는거 같은데요.. 왜 그럴까요??

해당 전체 페이지를 소스 보기 하여
ctrl + f 로 Yhiddenframe 검색해보시구요
만약 있다면 위의 스크립트를 지원하지 않는 브라우져 인것 같습니다.
일반적으로 tail.sub.php에 삽입하였다면 그누보드 내의 모든 페이지에 삽입될텐데.......
글세요. 저도 해당 내용을 보기전에는 딱 머라 말하기가 어렵군요
잘 해결 하시길 바랍니다
지금
http://www.gaboza.net/ 에 들어가서 소스보기 하니
Yhiddenframe 은 보이지 않네요.
ctrl + f 로 Yhiddenframe 검색해보시구요
만약 있다면 위의 스크립트를 지원하지 않는 브라우져 인것 같습니다.
일반적으로 tail.sub.php에 삽입하였다면 그누보드 내의 모든 페이지에 삽입될텐데.......
글세요. 저도 해당 내용을 보기전에는 딱 머라 말하기가 어렵군요
잘 해결 하시길 바랍니다
지금
http://www.gaboza.net/ 에 들어가서 소스보기 하니
Yhiddenframe 은 보이지 않네요.
^^; 안되서 지웠어요.. 딴데서 테스트 해보려고요.. 답변 감사합니다. ^^
ㅇㅇㅇㅇㅇㅇㅇ

실시간 쪽지

쪽지 확인했는데도 쪽지왔다고 계속 뜨네요.
쪽지 창을 뛰우면 쪽지 왔다는 메시지가 2번뜨는데 왜 그러죠. 그대로 적용했는데.
쪽지 창을 뛰우면 쪽지 왔다는 메시지가 2번뜨는데 왜 그러죠. 그대로 적용했는데.

xml_del.php 이파일을 실행하면
<?php
include_once './_common.php';
$xml_file = $g4['path'] . "/xml/" . $member['mb_id'] . ".php";
$xml_text = '<?php
Header("Content-type: text/xml");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo "<?xml version=\"1.0\" encoding=\"" . $g4['charset'] . "\" ?>\n";
echo "<root>\n";
echo "</root>\n";
?>';
Ywrite_lock($xml_file, $xml_text);
?>
결과값이 Parse error: parse error, unexpected T_STRING in /home/hosting_users/reapier/www/xml_del.php on line 13
요래 나오는군요. 그래서 문제가 되는거같은데.
혹시나 해서 팔봉닷컴 xml_del.php를 해봤는데 아무값도 안나오더라고요. 이게 정상인거 같은데. 소스가 툴렸나요?
<?php
include_once './_common.php';
$xml_file = $g4['path'] . "/xml/" . $member['mb_id'] . ".php";
$xml_text = '<?php
Header("Content-type: text/xml");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo "<?xml version=\"1.0\" encoding=\"" . $g4['charset'] . "\" ?>\n";
echo "<root>\n";
echo "</root>\n";
?>';
Ywrite_lock($xml_file, $xml_text);
?>
결과값이 Parse error: parse error, unexpected T_STRING in /home/hosting_users/reapier/www/xml_del.php on line 13
요래 나오는군요. 그래서 문제가 되는거같은데.
혹시나 해서 팔봉닷컴 xml_del.php를 해봤는데 아무값도 안나오더라고요. 이게 정상인거 같은데. 소스가 툴렸나요?
엑박님 코멘트처럼 저도 계속 창이 뜨길래 xml_del.php 에서 chaarset을 아예 그냥 euc-kr로 지정해버렸더니 되는군요 아마도 $g4['charset'] 이게 잘 안넘어오는것 같습니다..
그러나 문제는 스크립트 오류가 떠요 ㅠㅜ
tail.sub.php 에 삽입한 스크립트 중에
this.rootName = data.documentElement.nodeName;
이부분이 자꾸 애러가 나는군요 >_< 왜그러는걸까여~ 객채가 필요하답니다..
사용법대로 그대로 다 적용하구 위에 남긴대로 xml_del.php 저부분만 손댔습니당.
그러나 문제는 스크립트 오류가 떠요 ㅠㅜ
tail.sub.php 에 삽입한 스크립트 중에
this.rootName = data.documentElement.nodeName;
이부분이 자꾸 애러가 나는군요 >_< 왜그러는걸까여~ 객채가 필요하답니다..
사용법대로 그대로 다 적용하구 위에 남긴대로 xml_del.php 저부분만 손댔습니당.

echo "<?xml version=\"1.0\" encoding=\"" . $g4['charset'] . "\" ?>\n";
위 라인을 지우니깐 잘되내요
위 라인을 지우니깐 잘되내요

고맙습니다.