基本功能:能登陆,聊天,记录在线人数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;
}
?>

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

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

    基本功能:能登陆,聊天,记录在线人数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. 嵌入式开发从业人员生存状况
  2. 开机f8修复电脑步骤_电脑维修实战,修复电脑开机的各种报错提示,看了不后悔...
  3. 【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )
  4. 20220129--CTF WEB方向刷题-- WP--非常简单的webshell题
  5. 2017浙江省赛 B - Problem Preparation ZOJ - 3959
  6. (翻译)Tricks of the windows game programming Gurus(Windows游戏大师之路) --- 前言(作者:ANDRE LAMOTHE 1999)...
  7. 电动葫芦使用注意事项(转载)
  8. (9)verilog语言编写SPI接收
  9. java比较器Comparator 和 Comparable 的区别
  10. Raki的读paper小记:FLAT: Chinese NER Using Flat-Lattice Transformer
  11. Java List retainAll方法使用注意事项
  12. java libtorrent_[转载]libtorrent安装windows版
  13. html制作日程安排,如何制作一个Web日程安排表?
  14. 将unity地形转换为mesh
  15. java 去掉图片水印文字_Java实现图片水印工具类
  16. 开封文化艺术职业学院计算机甲骨文,甲骨文软件学院致19级全体同学的一封信 暨2021年寒假作业安排...
  17. 钉钉考勤接口python3.6调用
  18. 部署搭建DNS服务器
  19. 《计算机应用基础》 东师,A东师《计算机应用基础》15春在线作业 .doc
  20. 程序员必读书单1.0

热门文章

  1. 利用TeamViewer实现唤醒远程电脑一例方法
  2. 2022电博会与软博会再度联袂,与您共赴20年之约!
  3. Hierarchical Convolutional Features for Visual Tracking(CF2)论文翻译
  4. 接收后台返回的文件流或 base64 后下载打印 pdf 功能
  5. 离散数学——图论部分
  6. Android 信号量signal使用注意的问题
  7. 在matlab中画多个图,Matlab在一个图形窗口里画多个图形的详细教程
  8. 炒股Java_炒股Java
  9. 【聆思CSK6视觉AI开发套件试用】SDK实用性评测
  10. 在线全部免费技术视频