Chat
|
|
|
|
<html>
<script language="javascript">
<!--//
var strChar;
var i=0, printStr;
var img1 = new Image();
var img2 = new Image();
var img3 = new Image();
var img4 = new Image();
img1.src="face_good.gif";
img2.src="face_happy.gif";
img3.src="face_bored.gif";
img4.src="face_sleepy.gif";
<?php
$mes_repeat=($member==0) ? "(Welcome $name, enjoy chatting!)" : ". . . . . . . . . . . . . . . . . . ";
echo($mes ? "var msg ="$mes";" : "var msg="$mes_repeat ";"); ?> function printChar(){
if(i>msg.length){
clearTimeout(timerID);}
else{
if(document.layers){
printStr = msg.substring(0,i);
document.sText.document.open();
document.sText.document.write(printStr);
document.sText.document.close();
}
else if(document.getElementById){
printStr=msg.substring(i, i+1);
var obj = document.createTextNode(printStr);
document.getElementById("sText").appendChild(obj);
}
i++;
timerID=setTimeout("printChar()", 20);}
document.frmChat.mes.focus();}
//-->
</script>
<body onLoad="printChar()">
<?php
$logfile = "sample.txt";
define(USR_LST, "member.txt"); define(TIMEOUT, 300); $now = time(); define(JOIN, "Join"); define(RELOAD, "Send/Reload");
$usr_arr = file(USR_LST); $n=sizeof($usr_arr); $fp = @fopen(USR_LST, "wb"); flock($fp, LOCK_EX);
for($i = 0; $i < $n; $i++){
list($regist_face, $regist_addr, $regist_name, $time_stmp, $point, $status,) = explode("|", $usr_arr[$i]);
if($i==0)$lock_img = $status;
if($now-$time_stmp < TIMEOUT){
if($regist_addr == $REMOTE_ADDR && empty($room_lock) && $i == 0 || $n < 2){ unset($status); unset($lock_img);}
if($mes){
$point = ($regist_addr != $REMOTE_ADDR) ? $point-1 : $point+2;
}elseif($member==1){
$point = ($regist_addr != $REMOTE_ADDR) ? $point : $point-1;
}
if($point > 0) { if($point>10) $point=10;
fputs($fp, ($regist_addr != $REMOTE_ADDR) ? "$regist_face|$regist_addr|$regist_name|$time_stmp|$point|$status|n" : "$regist_face|$regist_addr|$regist_name|$now|$point|$status|n" );
switch($point){
case "10":
case "9":
case "8":
$feeling="_happy.gif";
break;
case "7":
case "6":
case "5":
$feeling="_good.gif";
break;
case "4":
case "3":
$feeling="_bored.gif";
break;
case "2":
case "1":
$feeling="_sleepy.gif";
break;
}
$regist_member="$regist_name|${regist_face}${feeling}";
$members[$regist_member] = $regist_addr;
$how_many++;
if(($regist_addr == $REMOTE_ADDR) && $member==1){
$my_feeling = "${face}$feeling";
$message_box = 1;
if($room_lock){
rewind($fp);
fputs($fp,"$regist_face|$regist_addr|$regist_name|$time_stmp|$point|<img src="lock.gif">|n");
$checked = "checked";
$lock_img = "<img src="lock.gif">";
}
}
}
}
}
fclose($fp);
if(($lock_img && $how_many > 1)&&(!$message_box || $member==0)){
unset($name);
$lock_msg ="This room is locked";
} trim($name); $name=htmlspecialchars($name);
if(get_magic_quotes_gpc()) $name=stripslashes($name);
if($member==0 && ereg("^[^[:blank:]]{1,}$", $name)){ $i = 0;
if(isset($members)){
foreach($members as $key=>$value){
list($member_name,)=explode("|", $key);
if(ereg("^$value$", $REMOTE_ADDR) || ereg("^$member_name$", $name)){
$ng_msg="Use other name or you may have already entered once!";
break;
}
$i++;
}}
if($i == $how_many){
$fp = fopen(USR_LST, "ab");
flock($fp, LOCK_EX);
fputs($fp,"$face|$REMOTE_ADDR|$name|$now|5||n");
$how_many++;
$message_box=1;
$regist_member="$name|${face}_good.gif";
$members[$regist_member] = $REMOTE_ADDR;
$my_feeling="${face}_good.gif";
fclose ($fp);
}
} $w=$art_num; $lines = file($logfile);
$n=sizeof($lines); $fp = @fopen($logfile, "w"); flock($fp, LOCK_EX);
if($members && $message_box){
if(!empty($mes)){
trim($mes);
$mes = htmlspecialchars ($mes);
if(get_magic_quotes_gpc())
$mes = stripslashes($mes);
$mes = str_replace("rn", "r", $mes);
$mes = str_replace("r", "n", $mes);
$mes = nl2br($mes);
$mes = str_replace("n", "", $mes);
$my_message = $mes;
$count_fp = fopen("count.txt","r+");
flock($count_fp, LOCK_EX);
$num = fgets($count_fp, 32);
if($how_many > 1) ++$num;
rewind($count_fp);
fputs($count_fp, $num);
fclose($count_fp);
$mes = "$num|$REMOTE_ADDR|$name|$mes|n";
fputs($fp, $mes);
}
for($i=0; $i < $how_many; $i++){
reset($members);
list($num, $regist_addr, $regist_name, $regist_mes,) = explode("|", $lines[$i]);
while(list($key, $value) = each($members)){
list($member_name, )=explode("|", $key);
if($mes && $value==$REMOTE_ADDR && $member_name==$name) continue;
if($value == $regist_addr && $member_name == $regist_name){
if($num > $art_num){
if(!$new_art_num) $new_art_num=$num;
$members[$key]="$regist_mesn";
}
fputs($fp, $lines[$i]);
break;
}
}
} reset($members);
} fclose($fp);
if($how_many < 2)unset($lock_img);
$art_num = $new_art_num;
if(empty($art_num)) $art_num = $w;
if(!$lock_msg){
echo("<table border=0><form name="frmChat" method="post" action="/chat.php">");
if($name && $message_box){
echo("<input type="hidden" name="name" value="$name"><input type="hidden" name="face" value="$face"><tr><td><table><caption align=bottom>$name</caption><td><center><img src="$my_feeling">
</center></td></table></td><td><table><tr><td><div id="sText" style"position:absolute"></div></td></tr></table></td></tr><tr><td></td><td><input type=text name="mes" size=80 maxlength=80 ><input name=member type=hidden value=1>");
echo("<input type="hidden" name="art_num" value=$art_num>");
}else{
echo("<td><table><td><font size=2 face=arial>Enter your name here :</font></td><td><input name="name" type="text" size="12" maxlength="12"><input type="radio" name="face" value="kao" checked ><img src="face_good.gif"><input name=member type=hidden value=0>n");
}
echo("<input type="submit" value=" ");
echo(empty($message_box) ? JOIN : RELOAD);
echo(""><input type="reset" value="reset"></td></tr></table><table><tr><td>");
if(!empty($message_box) && $how_many > 1){
list($member_name, )=explode("|",key($members));
if($member_name==$name){
echo(empty($lock_img) ? "<img src="unlock.gif">" : $lock_img);
echo("<input type="checkbox" name="room_lock" value=1 $checked >");
}else{
echo($lock_img ? $lock_img : "<img src="unlock.gif">");
} reset($members);
echo("</td></tr>");
}
echo("</table>");
}else{echo($lock_msg);}
echo("</form>");
echo("$ng_ms");
if(empty($members)){ $count_fp = @fopen("count.txt","w+");
flock($count_fp, LOCK_EX);
fputs($count_fp, 0);
fclose($count_fp);
}
if($message_box && $members){
foreach($members as $key => $value){
list($member_name, $member_face)=explode("|", $key);
if(ereg("^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$", $value)){
unset($value);}
if($member_name!=$name)echo("<table><table border=0><td><table><caption align=bottom>$member_name</caption><td><center><img src="$member_face"></center></td></table></td></td><td>$value</td></table></table>");
}
}
?>
|
|
|
Usage Example
|
|
|
Rate This Script
|
|
|
|