php在线非注册聊天系统的开发-初

杨老板的勿忘初衷页面开了(http://www.shenmegui.wang),看到杨老板的页面中GoChat部分没有做,那么就由我这种廉价劳动力来解决吧:

首先来数据表的建立:


然后在配置文件config.php中写入全局变量,为了可移植性, 移植时只需改变此php内容:

那么我就可以方便地写发送新消息的say.php了:

当然这里存在严重的SQL注入漏洞,我会在中篇或者下篇处理掉,这个文件接收POST过来的参数,然后将它插入数据库。

那么就到另一个重要页面了,list.php,提供消息列表的显示,这里,我为了前端开发的便利,采用了类似printf的格式控制字符串,两个list函数对输入的格式控制字符串进行处理,仅替换其中的%username% %time% %text%,例如前端开发者可以传入他们想要的标签,用漂亮的css定义过的类来实现聊天气泡等等,当然还可以加入各种表情符号,者得定义一些转义字符,然后前端用JavaScript处理用img显示出来即可。本文件中,listbynum是通过条目来列举,listbylast是通过与今天相隔几天来获取消息,方便前端人员使用。

<?php
//list.php
/*
chat_list Function Params
from:The Index To List From
num:The Max Num To List
format:The Format Contorl String
line:Returned String Between Lines
*/
require_once 'config.php';
function chat_listbynum($from,$num,$format)
{
global $mysql_address,$mysql_username,$mysql_password,$mysql_database;
$mysqli=new mysqli($mysql_address,$mysql_username,$mysql_password,$mysql_database);
/* check connection */ 
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$result=$mysqli->query("SELECT * FROM msg LIMIT $from,$num");
if(!$result)die('List Error!');
$mysqli->close();
$row=$result->fetch_array(MYSQLI_ASSOC);
while($row){
$t=$format;
$t=str_replace('%username%',$row['uname'],$t);
$t=str_replace('%text%',$row['text'],$t);
$t=str_replace('%time%',$row['time'],$t);
echo $t;
$row = $result->fetch_array(MYSQLI_ASSOC);
}
}
function chat_listbylast($days,$format)
{
global $mysql_address,$mysql_username,$mysql_password,$mysql_database;
$mysqli=new mysqli($mysql_address,$mysql_username,$mysql_password,$mysql_database);
/* check connection */ 
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$now=date('Y-m-d H:i:s');
$result=$mysqli->query("SELECT * FROM msg WHERE DateDiff(time,'$now')=$days");
if(!$result)die('List Error!');
$mysqli->close();
$row=$result->fetch_array(MYSQLI_ASSOC);
while($row){
$t=$format;
$t=str_replace('%username%',$row['uname'],$t);
$t=str_replace('%text%',$row['text'],$t);
$t=str_replace('%time%',$row['time'],$t);
echo $t;
$row = $result->fetch_array(MYSQLI_ASSOC);
}
}
?>

那么既然消息有时效性,太久远的,过时的消息堆积在服务器中,不仅占用空间,还影响速度,clear.php中有clear函数,用于清除超过n天的消息:


当然这个项目还不够完善,需要修补一些漏洞,而且需要提供更多支持,例如好友系统,头像系统等等,我会在后续篇目更新这些内容,敬请期待!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DuckChat是一款安全的私有聊天软件,基于PHP环境,可运行在Docker、Linux、Windows、MacOS等各种平台上,它帮助我们简化企业办公、客服系统、互联网创业,提供了完善的IM相关功能,并提供Android/iOS/Web多客户端。开源免费支持私有部署的聊天系统.--------------------------------------------------------企业办公OA、商业机密聊天,社交领域创业、客服系统、网站论坛社交转化等等需求,都没有一个良好的通用解决方案。定制收费高、中心化消息存储不安全、无法快速集成已有系统等问题,DuckChat的三大特点提供了新的解决方案。开源免费无成本搭建私有部署保证信息安全支持随意定制快速集成业务功能和已有系统1.0.7版本支持功能--------------------------------------------------------支持语音、文字、图片类型的消息支持个人、群组聊天支持好友关系管理、通讯录支持站点管理、多站点同时连接支持多种数据库,应对不同用户量级-----------新版本即将支持:文件传输视频消息群组禁言和豁免发言人阅后即焚详细的后台管理--------------------------------------------------------在手机客户端操作管理后台:管理站点基本信息,管理站点用户、群,设置新用户默认好友、默认群,配置集成H5小程序,注册限制邀请码。小程序自由扩展--------------------------------------------------------DuckChat的小程序扩展十分简单,只需要开发网页可以访问的H5网页,即可通过后台小程序配置,将页面地址配置成一个小程序,展示在首页的菜单栏中。并且可以设置首页默认展示的小程序,完善业务。另外可以通过小程序SDK接口,通过sdk获取用户信息。开发与ucenter或用户已有项目的账号系统集成,这样可以使用原有系统账号来登录DuckChat聊天系统。多平台部署、多客户端支持--------------------------------------------------------DuckChat基于PHP开发环境,默认使用sqlite数据库,可以运行在各种系统环境下,尤其是在使用docker后,这个过程会更加简化。Web客户端可以在浏览器直接打开DuckChat聊天系统,官方版的Android和iOS客户端,更像是浏览器,输入搭建的站点地址,即可快速实现移动办公、聊天
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值