基本功能能登陆聊天记录在线人数IP事件能控制聊天的字体颜色自动把转化聊天中网址为链接地址能定制聊天室标题广告信息等等使用文本作为存储媒体又兴趣可以参考代码并且进行扩展
其实PHP作为快速开发的脚本语言是很棒的!
===代码===
<?php
/**
* 黑夜路人简易聊天室
* 作者: heiyeluren <heiyeluren_at_com>
* 创建: :
* 修改: :
*/
error_reporting();
session_start();
header(ContentType:text/html;charset=gb);
define(SCRIPT $_SERVER[SCRIPT_NAME]);
define(CHAT_NOTE /chattxt);
define(ONLINE_LIST /onlinetxt);
define(REF_TIME );
define(CHAT_NAME 黑夜路人聊天室);
define(AD_MSG 今天是中国情人节 祝大家情人节快乐!!);
//获取值
if (isset($_GET[action]) && !empty($_GET[action])) {
$action = $_GET[action];
}
//如果已经登陆那么直接跳到聊天界面
if (!isset($_GET[action]) && isset($_SESSION[username])) {
header(location:SCRIPT?action=chat);
}
//登陆提示
if (!isset($_GET[action]))
{
if (!session_is_registered(username))
{
echo <p><h align=center>[ CHAT_NAME ] © </h></p>
<p align=center>
<form action=SCRIPT?action=login method=post>
呢称: <input type=text size= maxlength= name=login_user>
<input type=submit value=聊天>
</form></p>
;
exit;
}
}
//校验登陆
if ($action==login)
{
if (isset($_POST[login_user]) && !empty($_POST[login_user])) {
$username = $_POST[login_user];
} else {
$username = 游客;
}
session_register(username);
save_online($username get_client_ip());
header(location:SCRIPT?action=chat);
}
//开始聊天wwwknowskycom
if ($action==chat)
{
$online_sum = get_online_sum();
echo <head><title>[ CHAT_NAME ]</title></head><center>
<body bgcolor=#CBFB style=fontsize:px;>
<div style=border:px solid #; width:px;height:>
<iframe src=SCRIPT?action=show
name=show_win width= height= scrolling=auto frameborder=></iframe>
</div><br>
<marquee width=% scrollamount=> AD_MSG </marquee>
[当前在线$online_sum]
<iframe src=SCRIPT?action=say name=say_win width=
height= scrolling=no frameborder=>
;
}
//说话界面
if ($action==say)
{
echo <head><title>[ CHAT_NAME ]</title></head><center>
<body bgcolor=#CBFB style=fontsize:px;>
<form action=SCRIPT?action=save method=post name=chat
onSubmit=return check()>
[$_SESSION[username]]说:<input type=text size=
maxlength= name=chatmsg style= backgroundcolor:#CC;
width:px; height:px; border:px solid:#>
<select name=usercolor>
<OPTION selected style=COLOR: # value=>默认颜色</OPTION>
<OPTION style=COLOR: # value=#>黑色沉静</OPTION>
<option style=COLOR: #ff value=#FF>红色热情</option>
<option style=COLOR: #ff value=#FF>蓝色开朗</option>
<option style=COLOR: #ffff value=#FFFF>桃色浪漫</option>
<option style=COLOR: # value=#>绿色青春</option>
<option style=COLOR: # value=#>青色清爽</option>
<option style=COLOR: # value=#>紫色拘谨</option>
<option style=COLOR: # value=#>暗夜兴奋</option>
<option style=COLOR: # value=#>深蓝忧郁</option>
<option style=COLOR: # value=#>卡其制服</option>
<option style=COLOR: #ff value=#FF>镏金岁月</option>
<option style=COLOR: #ff value=#FF>湖波蕩漾</option>
<option style=COLOR: #ff value=#FF>发亮蓝紫</option>
<option style=COLOR: #ff value=#FF>爱的暗示</option>
<option style=COLOR: # value=#>墨绿深沉</option>
<option style=COLOR: # value=#>灰色轨迹</option>
<option style=COLOR: # value=#>伦敦灰雾</option>
</select>
<input type=submit value=说话 style=backgroundcolor:#ffffff>
<a href=SCRIPT?action=logoff title=退出聊天室
target=_top onclick=return confirm(\你确定要退出聊天室吗?\)>退出</a>
</form>
<script>function check(){if(documentchatchatmsgvalue==)
{;alert(请输入聊天信息!);return false;}return true;}</script>
;
}
//保存说话
if ($action==save)
{
if ($_POST[chatmsg]!=) {
save_chat($_POST[chatmsg] $_SESSION[username] $_POST[usercolor]);
}
header(location:SCRIPT?action=say);
}
//显示聊天记录
if ($action==show)
{
echo <body style=fontsize:px onload=scrollit()>;
echo <META HTTPEQUIV=REFRESH
CONTENT=REF_TIME;URL=SCRIPT?action=show>;
if (file_exists(CHAT_NOTE)) {
$chat_msg = @file_get_contents(CHAT_NOTE);
echo $chat_msg;
} else {
echo 目前没有人说话;
}
}
//退出聊天室
if ($action==logoff)
{
unset($_SESSION[username]);
session_destroy();
header(location:SCRIPT);
}
/* 基本函数 */
//保存聊天记录函数
function save_chat($msg $user $color)
{
if (!$fp = fopen(CHAT_NOTE a+)) {
die(创建聊天记录文件失败 请检查是否有权限);
}
$msg = htmlspecialchars($msg);
$msg = preg_replace(/([http|ftp:\/\/])*([azA])
+\([azAZ_])+\([azAZ_])+(azAZ_)*/
<a href=\\ target=_blank>\\</a> $msg);
$msg = preg_replace(/([azAZ_\])+@([azAZ])
+\([azAZ]{})+/ <a href=mailto:\\>\\</a> $msg);
$msg = date(H:i:s) [$user]说:
<font color=$color>$msg</font><br>\r\n;
if (!fwrite($fp $msg)) {
die(写入聊天记录失败);
}
fclose($fp);
}
//写在线人信息
function save_online($user $ip)
{
if (!$fp = fopen(ONLINE_LIST a+)) {
die(创建在线列表文件失败 请检查是否有权限);
}
$user = str_replace(| $user);
$line = $user|$ip|time()\r\n;
if (!fwrite($fp $line)) {
die(写入在线列表失败);
}
fclose($fp);
}
//获取在线人数
function get_online_sum()
{
if (file_exists(ONLINE_LIST)) {
$online_msg = file(ONLINE_LIST);
return count($online_msg);
} else {
return ;
}
}
//获取当前登陆用户IP
function get_client_ip()
{
if ($_SERVER[REMOTE_ADDR]) {
$cip = $_SERVER[REMOTE_ADDR];
} elseif (getenv(REMOTE_ADDR)) {
$cip = getenv(REMOTE_ADDR);
} elseif (getenv(HTTP_CLIENT_IP)) {
$cip = getenv(HTTP_CLIENT_IP);
} else {
$cip = unknown;
}
return $cip;
}
?>