글
자세한 얘기는 아래(http://www2.ssam.biz/blog/?tb=1&no=159)를 읽어보길 권한다.
수정사항:
새로고침하면서, 채칵채칵 소리나는걸,, 거의 없앴다.
글을 올렸을때, 두어번 채칵되고, 변동사항 있을때 채칵되고,,
그밖에 대기중에 채칵되는 소리는 없앴다.
(location.reload()를 쓰니까, 채칵되는 소리가 안난다.)
그리고 시간을 달았는데,,
시간,분,초가 화면에 출력되고,
채팅데이터가 연월일의 이름으로 저장되도록,,, 바꿨다.
그리고 검색해보니까, php로 채팅하는 소스가 여럿나왔다..
다운받아보니,, 복잡하던데,,,
아마도 그만큼 좋은거겠지..
어떤 것은 mysql 데이터베이스를 이용하는가 보던데,,
그럼 아마 서버부하가 .. 만만찮을거 같다. 그냥 지레짐작에,
이거는 그냥 파일로 저장해서, 출력하는 것이고,
그나마도 현재 출력된 상태에서 변동사항이 있을때(2초마다 검색:채칵소리없음), 새로고침하는 거라서,,,,
서버부하는 작지 않을까 싶다.
예제는 http://www2.ssam.biz/chat4.php
<?
ob_start();
$db = "./777/".date("Ymd"); // 변경가능
$last = $db."_last";
?>
<center align="center">
<?
if($_POST[name] && $_POST[content]){
$memo = "";
$time = date("H:i:s");
if(!$_COOKIE[name]) setcookie("name", $_POST[name], time() + 86400);
if($_COOKIE[name] != $_POST[name]) {
if($_COOKIE[name]) $memo = " @@@@@".$time."@@@@@<font color=blue>".$_COOKIE[name]."</font>님이 닉네임을 <font color=blue>".$_POST[name]."</font>으로 바꿨습니다.\r\n";
else $memo = " @@@@@".$time."@@@@@<font color=blue>".$_POST[name]."</font>님이 입장하셨습니다.\r\n";
setcookie("name");
setcookie("name", $_POST[name], time() + 86400);
}
$_POST[content] = preg_replace('`[\r\n]+`i', '', nl2br(stripslashes($_POST[content])));
$memo .= $_POST[name]."@@@@@".$time."@@@@@".$_POST[content]."\r\n";
$fp = fopen($db,"a");
fputs($fp,$memo);
fclose($fp);
$fp = fopen($last,"w");
fputs($fp,time());
fclose($fp);
?>
<script>
window.open("?v=r","cbody");
location.replace("?v=w");
</script>
<?
} else if($_GET[v]=="w") {
?>
<form method="post" action="chat4.php">
<table border=5 cellspacing=4 cellpadding=4 width=750>
<col width=70><col>
<tr><td><input type="text" name="name" style="width:70" value="<?=$_COOKIE[name]?>"></td>
<td><input type="text" name="content" style="width:560;height:20;font-size:9pt;overflow-y:auto"> <input type="submit" value="쓰기"></td>
</tr></table>
</form>
<?
} else if($_GET[v]=="b") {
?>
<table border=5 cellspacing=2 cellpadding=4 width=750>
<col width=70><col><col width=45>
<?
if(file_exists($db)){
$fp = fopen($db,"r");
$i = 1;
while(!feof($fp)){
$memo = fgets($fp);
$name = strtok($memo,"@@@@@");
$time = strtok("@@@@@");
$content = strtok("@@@@@");
if($name){
?>
<tr><td><?=$name?></td><td><?=$content?></td><td><?=$time?></td></tr>
<?
$i++;
}
}
fclose($fp);
}
?>
<tr><td></td><td style='display:none'><a name="rrr"> </a></td></tr>
</table>
<p>
<script>
function tmev(){
today=new Date();
var tm = today.getTime();
setTimeout("go('"+tm+"')", 2000);
}
function go(tm){
window.open("?v=t&t=" + tm,"tim");
}
tmev();
</script>
<?
} else if($_GET[v]=="t") {
$fp = fopen($last,"r");
$lastt = fread($fp,10);
fclose($fp);
?>
<script>
<?
if($lastt > substr($_GET[t],0,10)) {
?>
window.open("?v=r","cbody");
<?
} else {
?>
setTimeout("location.reload();", 2000);
<?
}
?>
</script>
<?
} else if($_GET[v]=="r") {
?>
<META HTTP-EQUIV=Refresh CONTENT='0; URL=?v=b#rrr'>
<?
} else {
?>
<html><head><title>[챗]</title></head>
<frameset rows="*,80, 10" frameborder="0" border="0" framespacing="0" onload="return true;" onunload="return true;">
<frame src="?v=b#rrr" name="cbody" target="tim" marginwidth="0" marginheight="0" scrolling="auto" noresize>
<frame src="?v=w" target="cbody" marginwidth="0" marginheight="0" scrolling="no" noresize>
<frame src="" name="tim" target="cbody" marginwidth="0" marginheight="0" scrolling="no" noresize>
</frameset>
</html>
<?
}
?>
</center>
<style>
* {font-size:9pt}
a {color:black}
a:link {text-decoration:none}
a:visited {text-decoration:none}
a:hover {text-decoration:underline}
table {border-width:6px; border-style: outset}
</style>
수정사항:
새로고침하면서, 채칵채칵 소리나는걸,, 거의 없앴다.
글을 올렸을때, 두어번 채칵되고, 변동사항 있을때 채칵되고,,
그밖에 대기중에 채칵되는 소리는 없앴다.
(location.reload()를 쓰니까, 채칵되는 소리가 안난다.)
그리고 시간을 달았는데,,
시간,분,초가 화면에 출력되고,
채팅데이터가 연월일의 이름으로 저장되도록,,, 바꿨다.
그리고 검색해보니까, php로 채팅하는 소스가 여럿나왔다..
다운받아보니,, 복잡하던데,,,
아마도 그만큼 좋은거겠지..
어떤 것은 mysql 데이터베이스를 이용하는가 보던데,,
그럼 아마 서버부하가 .. 만만찮을거 같다. 그냥 지레짐작에,
이거는 그냥 파일로 저장해서, 출력하는 것이고,
그나마도 현재 출력된 상태에서 변동사항이 있을때(2초마다 검색:채칵소리없음), 새로고침하는 거라서,,,,
서버부하는 작지 않을까 싶다.
예제는 http://www2.ssam.biz/chat4.php
<?
ob_start();
$db = "./777/".date("Ymd"); // 변경가능
$last = $db."_last";
?>
<center align="center">
<?
if($_POST[name] && $_POST[content]){
$memo = "";
$time = date("H:i:s");
if(!$_COOKIE[name]) setcookie("name", $_POST[name], time() + 86400);
if($_COOKIE[name] != $_POST[name]) {
if($_COOKIE[name]) $memo = " @@@@@".$time."@@@@@<font color=blue>".$_COOKIE[name]."</font>님이 닉네임을 <font color=blue>".$_POST[name]."</font>으로 바꿨습니다.\r\n";
else $memo = " @@@@@".$time."@@@@@<font color=blue>".$_POST[name]."</font>님이 입장하셨습니다.\r\n";
setcookie("name");
setcookie("name", $_POST[name], time() + 86400);
}
$_POST[content] = preg_replace('`[\r\n]+`i', '', nl2br(stripslashes($_POST[content])));
$memo .= $_POST[name]."@@@@@".$time."@@@@@".$_POST[content]."\r\n";
$fp = fopen($db,"a");
fputs($fp,$memo);
fclose($fp);
$fp = fopen($last,"w");
fputs($fp,time());
fclose($fp);
?>
<script>
window.open("?v=r","cbody");
location.replace("?v=w");
</script>
<?
} else if($_GET[v]=="w") {
?>
<form method="post" action="chat4.php">
<table border=5 cellspacing=4 cellpadding=4 width=750>
<col width=70><col>
<tr><td><input type="text" name="name" style="width:70" value="<?=$_COOKIE[name]?>"></td>
<td><input type="text" name="content" style="width:560;height:20;font-size:9pt;overflow-y:auto"> <input type="submit" value="쓰기"></td>
</tr></table>
</form>
<?
} else if($_GET[v]=="b") {
?>
<table border=5 cellspacing=2 cellpadding=4 width=750>
<col width=70><col><col width=45>
<?
if(file_exists($db)){
$fp = fopen($db,"r");
$i = 1;
while(!feof($fp)){
$memo = fgets($fp);
$name = strtok($memo,"@@@@@");
$time = strtok("@@@@@");
$content = strtok("@@@@@");
if($name){
?>
<tr><td><?=$name?></td><td><?=$content?></td><td><?=$time?></td></tr>
<?
$i++;
}
}
fclose($fp);
}
?>
<tr><td></td><td style='display:none'><a name="rrr"> </a></td></tr>
</table>
<p>
<script>
function tmev(){
today=new Date();
var tm = today.getTime();
setTimeout("go('"+tm+"')", 2000);
}
function go(tm){
window.open("?v=t&t=" + tm,"tim");
}
tmev();
</script>
<?
} else if($_GET[v]=="t") {
$fp = fopen($last,"r");
$lastt = fread($fp,10);
fclose($fp);
?>
<script>
<?
if($lastt > substr($_GET[t],0,10)) {
?>
window.open("?v=r","cbody");
<?
} else {
?>
setTimeout("location.reload();", 2000);
<?
}
?>
</script>
<?
} else if($_GET[v]=="r") {
?>
<META HTTP-EQUIV=Refresh CONTENT='0; URL=?v=b#rrr'>
<?
} else {
?>
<html><head><title>[챗]</title></head>
<frameset rows="*,80, 10" frameborder="0" border="0" framespacing="0" onload="return true;" onunload="return true;">
<frame src="?v=b#rrr" name="cbody" target="tim" marginwidth="0" marginheight="0" scrolling="auto" noresize>
<frame src="?v=w" target="cbody" marginwidth="0" marginheight="0" scrolling="no" noresize>
<frame src="" name="tim" target="cbody" marginwidth="0" marginheight="0" scrolling="no" noresize>
</frameset>
</html>
<?
}
?>
</center>
<style>
* {font-size:9pt}
a {color:black}
a:link {text-decoration:none}
a:visited {text-decoration:none}
a:hover {text-decoration:underline}
table {border-width:6px; border-style: outset}
</style>
'웹스터디 > nosqlboardchat' 카테고리의 다른 글
채팅 소스 56 (mysql 안씀, ajax) (0) | 2008.05.26 |
---|---|
채팅 소스 55 (mysql 안씀, ajax) - 닉도용 방지 (0) | 2008.05.26 |
간단한 채팅7 -> 8 ->9 ->10 (0) | 2008.05.26 |
간단한 채팅소스 6 (0) | 2008.05.26 |
간단한 채팅소스5 (1) | 2008.05.26 |
간단한 채팅소스3 (0) | 2008.05.26 |
간단한 채팅소스2 (1) | 2008.05.26 |
간단한 채팅소스(또는 메모장) (0) | 2008.05.26 |
데이타 파일 (0) | 2008.05.26 |
게시판 설명3 (0) | 2008.05.26 |
RECENT COMMENT