`

PHP百行代码快速构建简易聊天室

 
阅读更多

无聊情况下,看能用比较少的代码构建聊天室,一开始写了整整100行把聊天室内完成,后来觉得很多功能没有,又重新修改,加了不少代码。其实不利用特别复杂的技术,比如模板、数据库等等,一样能做比较不错的聊天室,适合个人使用。

基本功能:能登陆,聊天,记录在线人数IP事件,能控制聊天的字体颜色,自动把转化聊天中网址为链接地址,能定制聊天室标题、广告信息等等。使用文本作为存储媒体,又兴趣可以参考代码,并且进行扩展。

其实PHP作为快速开发的脚本语言是很棒的!

===代码===

<?php
/**
* 黑夜路人简易聊天室
* 作者: heiyeluren <heiyeluren_at_163.com>
* 创建: 2005-8-10 22:42
* 修改: 2005-8-11 23:25
*/
error_reporting(7);
session_start();
header("ContentType:text/html;charset=gb2312");
define("SCRIPT", $_SERVER['SCRIPT_NAME']);
define("CHAT_NOTE", "./chat.txt");
define("ONLINE_LIST", "./online.txt");
define("REF_TIME", 5);
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><h3 align=center>[ ".CHAT_NAME." ] &copy; 2005</h3></p>
<p align=center>
<form action=".SCRIPT."?action=login method=post>
呢称: <input type=text size=25 maxlength=30 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");
}

//开始聊天
if ($action=="chat")
{
$online_sum = get_online_sum();
echo "<head><title>[ ".CHAT_NAME." ]</title></head><center><body bgcolor=#C4BFB9 style='font-size:12px;'>
<div style='border:1px solid #999966; width:802px;height:450'><iframe src='".SCRIPT."?action=show' name=show_win width=800 height=450 scrolling=auto frameborder=0></iframe></div><br>
<marquee width=70% scrollamount=2> ".AD_MSG." </marquee>&nbsp;&nbsp; [当前在线:$online_sum]
<iframe src='".SCRIPT."?action=say' name=say_win width=800 height=60 scrolling=no frameborder=0>
";
}

//说话界面
if ($action=="say")
{
echo "<head><title>[ ".CHAT_NAME." ]</title></head><center><body bgcolor=#C4BFB9 style='font-size:12px;'>
<form action=".SCRIPT."?action=save method=post name=chat onSubmit='return check()'>
[".$_SESSION['username']."]说:<input type=text size=80 maxlength=500 name=chatmsg style=' background-color:#99CC99; width:550px; height:22px; border:1px solid:#000000'>
<select name=usercolor>
<OPTION selected style='COLOR: #000000' value='000000'>默认颜色</OPTION>
<OPTION style='COLOR: #000000' value='#000000'>黑色沉静</OPTION>
<option style='COLOR: #ff0000' value='#FF0000'>红色热情</option>
<option style='COLOR: #0000ff' value='#0000FF'>蓝色开朗</option>
<option style='COLOR: #ff00ff' value='#FF00FF'>桃色浪漫</option>
<option style='COLOR: #009900' value='#009900'>绿色青春</option>
<option style='COLOR: #009999' value='#009999'>青色清爽</option>
<option style='COLOR: #990099' value='#990099'>紫色拘谨</option>
<option style='COLOR: #990000' value='#990000'>暗夜兴奋</option>
<option style='COLOR: #000099' value='#000099'>深蓝忧郁</option>
<option style='COLOR: #999900' value='#999900'>卡其制服</option>
<option style='COLOR: #ff9900' value='#FF9900'>镏金岁月</option>
<option style='COLOR: #0099ff' value='#0099FF'>湖波荡漾</option>
<option style='COLOR: #9900ff' value='#9900FF'>发亮蓝紫</option>
<option style='COLOR: #ff0099' value='#FF0099'>爱的暗示</option>
<option style='COLOR: #006600' value='#006600'>墨绿深沉</option>
<option style='COLOR: #333333' value='#333333'>灰色轨迹</option>
<option style='COLOR: #999999' value='#999999'>伦敦灰雾</option>
</select>
<input type=submit value='说话' style='background-color:#ffffff'> <a href=".SCRIPT."?action=logoff title=退出聊天室 target=_top onclick='return confirm(/"你确定要退出聊天室吗?/")'>退出</a>
</form>
<script>function check(){if(document.chat.chatmsg.value==''){;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='font-size:12px' onload='scrollit()'>";
echo "<META HTTP-EQUIV=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:////])*([a-zA-])+/.([a-zA-Z0-9_-])+/.([a-zA-Z0-9_-])+(a-zA-Z0-9_)*/', '<a href=//0 target=_blank>//0</a>', $msg);
$msg = preg_replace('/([a-zA-Z0-9_/.])+@([a-zA-Z0-9-])+/.([a-zA-Z0-9-]{2,4})+/', '<a href=mailto://0>//0</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 0;
}
}
//获取当前登陆用户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;
}
?>

分享到:
评论

相关推荐

    php 简易聊天室

    简易聊天室 v0.1 &lt;br&gt;本聊天室采用smarty+fleaphp+mysql设计而成. 1.安装 把本目录拷到你服务器所在的htdocs目录下,并修改index.php中的数据库配置. index.php?controller=chat 访问聊天室 我的个人...

    简易聊天室(PHP+MySQL

    实现注册、发言、显示、注销、在线用户统计

    h5匿名聊天PHP+TXT的轻型在线聊天室源码(无需数据库)

    h5自适应简易聊天室简约轻型聊天室源码,自适应电脑/手机,采用php语言+txt数据库,无后台,搭建即可使用,简单方便,理论上可以对接任何php程序~ 数据使用txt存放,默认显示近50条聊天记录(也可清空聊天记录) ...

    php聊天代码 韩国开源系统

    php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码php聊天代码...

    学习php聊天室源代码

    php聊天室源代码,对大家学习制作php聊天室有帮助

    PHP+Ajax简易Chat聊天室源码,无需数据库支持,无需配置,小白也能快速上手的简约风聊天室小程序,全面支持电脑端和手机端。

    无需配置数据库,无发复杂的设置,源码放进去就能直接用,支持电脑或手机端自适应窗口打开,还可以边聊边听音乐,所有打开的用户端全部自动同步聊天消息,电脑网页打开还有新进入和聊天消息提醒音效,让你快速沟通,...

    PHP多用户聊天室和私人聊天室源码支持同时创建多个聊天室.zip

    无限聊天室,你可以在创建无限的聊天室,还可以允许用户创建和管理自己的聊天室。 私人聊天消息/一对一聊天,可供用户无缝地聊天。他们可以使用此功能私下分享他们想要的任何东西。 受密码保护的聊天室,用户可以在...

    php写的简易聊天室代码

    index.php 复制代码 代码如下: &lt;html&gt; &lt;head&gt;&lt;Title&gt; 在线聊天 &lt;/title&gt;&lt;/head&gt; &lt;!– frames –&gt; &lt;frameset rows=”70%,*” BORDER=”0″&gt; &lt;frame name=”top” src=”_b...

    php简易聊天室

    本人开发的php聊天室~~~~

    PHP+TXT的轻型聊天室源码(无需数据库)

    一款php+txt的轻型聊天室源码 自适应电脑/手机 数据使用txt存放,默认显示近50条聊天记录 采用jquery+ajax轮询方式,适合小型聊天环境。 访问地址加?zhi进入管理模式,发送 clear 清空聊天记录。 修改在app.php文件...

    phpAJAX聊天室

    php聊天室

    ChartroomDemo.zip(简易聊天室)

    实验要求:运用Jsp的内置对象Session,Application等制作简易聊天室,能够实现简单的页面聊天功能。 实验要求: 1、进入jsp子目录,编写简易聊天室的JSP程序,聊天室的需要实现的基本功能:输入昵称、聊天。 2.根据...

    php实现简易的聊天室

    本系统实现了聊天室的登录、用户聊天内容的读入与显示,用户在线列表的显示,用户聊天记录的查询。

    约轻型聊天室-php+txt轻型聊天室

    数据使用txt存放,默认显示近50条聊天记录 采用jquery+ajax轮询方式,适合小型聊天环境。 访问地址加?admin进入管理模式,发送 clear 清空聊天记录。 修改在app.php文件里搜索admin更改,不要使用记事本打开修改。 ...

    PHP连接数据库 基础封装快速构建简易web项目

    PHP无框架,原生傻瓜式制作简易Api接口, 封装MySQL增删改查,图片上传,图形验证码生成,token验证,json统一返回格式。 项目地址:https://gitee.com/abmo2o/php-api-demo 此文件和使用方法仅适用于入门级在校大...

    江湖聊天室源码

    是一个不错的ASP源代码聊天室,大家看下乍样

    PHP实用模块-聊天室+留言板+论坛+注册登录+邮件收发系统

    功能齐全的的PHP模块代码,包含聊天室、留言板,论坛,注册登录等模块。

    php开发聊天室

    HTML5新功能WebSocket的学习 PHP版HTML5新功能WebSocket的学习 HTML5新功能WebSocket的学习与备忘

    PHP聊天室源代码

    PHP聊天室源代码,欢迎下载,转载别人的,希望大家都能在此基础上有自己的好的想法加以修改

    php聊天室源码 功能很好的聊天室

    php聊天室源码 功能很好的聊天室php聊天室源码 功能很好的聊天室php聊天室源码 功能很好的聊天室php聊天室源码 功能很好的聊天室php聊天室源码 功能很好的聊天室php聊天室源码 功能很好的聊天室php聊天室源码 功能很...

Global site tag (gtag.js) - Google Analytics