基本功能:能登陆,聊天,记录在线人数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 " <h3 align=center>[ ".CHAT_NAME." ] © 2005</h3>
<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>";
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>
<marquee width=70% scrollamount=2> ".AD_MSG." </marquee>    [当前在线:$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 οnclick='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' οnlοad='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('/([httpftp:\/\/])*([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>
\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;
}
?>

转载于:https://www.cnblogs.com/see7di/archive/2010/05/03/2239900.html

PHP百行代码快速构建简易聊天室相关推荐

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

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

  2. PHP程序百行代码快速构建简易聊天室方法

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

  3. 只需五步,快速构建Python聊天室

    在本文中,我们来谈一谈如何构建一个Python聊天室. 注意:你不需要安装任何额外的Python包. 作者 |  Dark Soulz 译者 | 弯月,责编 | 郑丽媛 头图 | CSDN 下载自东方 ...

  4. 百行go代码构建p2p聊天室

    百行go代码构建p2p聊天室 1. 上手使用 2. whisper 原理 3. 源码解读 3.1 参数说明 3.1 连接主节点 3.2 我的标识 3.2 配置我的节点 3.3 哪个聊天室 3.3 加入 ...

  5. 鱼佬:百行代码入手数据挖掘赛!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:鱼佬,武汉大学,Datawhale成员 本实践以科大讯飞xData ...

  6. 基于Ganos百行代码实现亿级矢量空间数据在线可视化

    简介: 本文介绍如何使用RDS PG或PolarDB(兼容PG版或Oracle版)的Ganos时空引擎提供的数据库快显技术,仅用百行代码实现亿级海量几何空间数据的在线快速显示和流畅地图交互,且无需关注 ...

  7. Kaggle—So Easy!百行代码实现排名Top 5%的图像分类比赛

    北京 上海巡回站 | NVIDIA DLI深度学习培训 2018年1月26/1月12日 NVIDIA 深度学习学院 带你快速进入火热的DL领域 阅读全文                        ...

  8. python图像分类代码_Kaggle—So Easy!百行代码实现排名Top 5%的图像分类比赛

    Kaggle-So Easy!百行代码实现排名Top 5%的图像分类比赛 作者:七月在线彭老师 说明:本文最初由彭老师授权翟惠良发布在公众号"七月在线实验室"上,现再由July重新 ...

  9. python写百行代码可运行_56 岁潘石屹学俩月 Python ,写下百行代码

    原标题:56 岁潘石屹学俩月 Python ,写下百行代码 By 超神经 内容导读:跨界王潘石屹在近期迷上了编程,不仅高调宣布学习 Python,拜老师,还隔三差五晒出自己的「编程课作业」,和网友进行 ...

最新文章

  1. ubuntu18.04换清华源
  2. memkind版本查看_QQ 20周年来啦!扫码查看你的回忆
  3. Numpy-矩阵的合并
  4. 20050708:我还是忍忍吧
  5. .net下模拟不同身份登陆以获取不同权限
  6. 无法将多信息文本转换为url_实体链接:信息抽取中的NLP的基础任务
  7. 数字电视CA原理与破解方式
  8. 怎么把优酷的kux格式转换成avi格式
  9. 软件测试人员如何月薪过万、月薪过万的秘籍
  10. USB(十)2022-03-03
  11. c语言 计算平均分
  12. x86 - 操作系统:中断、陷阱、异常、故障、终止
  13. VUE中$refs和$el的使用
  14. Revit二次开发之族库管理系统
  15. 霸王之业服务器未响应,霸王之业-微官网-详情页
  16. [CryptoHack] RSA-PRIMES PART1 Write-Up
  17. 【信息】宁波银行金融科技部:常见问题解答
  18. 容器里源码安装apache
  19. 一个网络工程师的一天
  20. 游戏工作室换IP与挂机的基础知识

热门文章

  1. 实时语义分割之ICNet
  2. 雷军上班也摸鱼?办公只有34分钟,在干啥呢
  3. 最适合失恋男生唱的10首歌
  4. Extjs6.2.0搭建项目框架
  5. [学习笔记]几个英语短句(2)
  6. My Batis Plus 学习笔记 一
  7. 魅蓝note3 android4.4,魅蓝note3有几个版本?魅蓝note3标准版和全网通版区别对比介绍...
  8. 计算机一wps基础应用,计算机一级计算机基础及WPS Office应用练习题
  9. 仿鸿蒙系统主题,“鸿蒙系统”到底模仿IOS还是安卓?网友:一步错满盘皆输 !...
  10. win7系统文件夹无法显示韩文_解决显示方块□□□的问题