导航:首页 > 编程语言 > php聊天工具

php聊天工具

发布时间:2022-09-10 02:01:15

php如何实现视频聊天

1,配置文件
复制代码代码如下:
<?php
define('PATH',dirname($_SERVER['SCRIPT_NAME'])); //聊天室目录
define('CHAT_NAME','PHP聊天室'); //聊天室名称
define("MESS", "mess.txt"); //聊天信息
define("PERSON", "person.txt"); //在线人名单
define("RETIME",3); //刷新时间
define("LINE",11); //公共窗口显示的行数
define("PRLINE",5); //私聊窗口显示的行数
define("MAX",50); //聊天室人数限制
define("MAXTIME",600000); //最大不发言时间,单位是毫秒
define("WELCOME","<font color=blue>欢迎光临".CHAT_NAME.",请遵守聊天室规则,不要恶意刷新,不要使用不文明用语。</font>"); //欢迎语
?>
2,公共函数文件
(1)chklogin()函数检查用户昵称是否重复。参数$user是登录用户的昵称。当函数返回值为True时,昵称不可用;返回值为False时,昵称可用。
复制代码代码如下:
function chklogin($file,$user){
$boo = false;
if(file_exists($file)){
$userarr = file($file);
/* 判断昵称是否重复 */
foreach($userarr as $value){ //判断昵称是否重复
$tmparr = explode('#',$value); //使用“#”作为分隔符来拆分字符串
if($user == $tmparr[0]){ //如果用户数组中包含此用户
$boo = true;
break;
}
}
}
return $boo;
}
(2)addlogin()函数将登录的用户昵称写入文件中,保存格式为:昵称#IP#性别,参数$file是保存的文件地址,$user是用户昵称,$ip是登陆IP,$sex表示用户性别。
复制代码代码如下:
function addlogin($file,$user,$ip,$sex){
$tmp = $user.'#'.$ip.'#'.$sex.chr(13).chr(10); //chr(13) 是一个回车,Chr(10) 是个换行符,chr(32) 是一个空格符
$fp = fopen($file,'a'); //写入方式在文件末尾追加信息
$boo = fwrite($fp,$tmp);
fclose($fp);
return $boo;
}
(3)storeuser()函数的作用是将用户信息存为一个数组。格式为“用户名,用户性别”,参数$file是用户列表文件。代码如下:
复制代码代码如下:
function storeuser($file){
$tmparr = file($file); //将文件内容写入数组
$userarr = array(); //创建数组
foreach($tmparr as $value){ //循环输出数组内容
$tmparr = explode('#',$value); //使用#拆分字符串
$userarr[] = $tmparr[0].','.$tmparr[2]; //将用户名和用户性别保存到新数组中
}
return $userarr;
}
(4)addmess()函数将发言内容写入文件中。参数$file是保存的文件地址,$mess是要保存的内容
复制代码代码如下:
function addmess($file,$mess){
$fp = fopen($file,'a'); //以追加的形式打开文件
$boo = fwrite($fp,$mess.chr(13).chr(10)); //将信息写入文件中
fclose($fp); //关闭文件
return boo;
}
(5)deluser()函数的作用是删掉用户。参数$file是保存的文件地址,$user是要删除的用户
复制代码代码如下:
function deluser($file,$user){
$tmparr = file($file); //将文件内容写入数组
$rearr = array(); //创建数组
foreach($tmparr as $value){ //循环输出数组内容
$tmp = explode('#',$value); //使用#拆分字符串
if($tmp[0] != $user){ //如果变量中的用户名和当前用户不相等
$rearr[] = $value; //将该用户信息保存到新数组中
}
}
$fp = fopen($file,'w+'); //以只写的方式打开文件
foreach($rearr as $value){ //循环数组
fwrite($fp,$value); //写入数组内容
}
fclose($fp); //关闭文件
}
(6)getRows()函数的作用是返回文件的行数,参数$file是文件名
复制代码代码如下:
function getRows($file){
if(file_exists($file)){ //如果文件存在
$fl = file($file); //将文件按行写入数组
return count($fl); //求出数组长度并返回
}else{
return 0; //如果文件不存在,返回0

⑵ php 怎么实现即时即时通讯

  1. php实现实时通信一般有两种方式:socket或comet。

  2. socket是比较好的解决方案,问题在于不是所有的浏览器都兼容,服务器端实现起来也稍微有点麻烦。

  3. comet(基于HTTP长连接的"服务器推")实现起来更加方便,而且兼容所有的浏览器。

  4. comet也有好几种实现方式,如iframe, http long request等。

⑶ php实时在线视频聊天怎么实现

接入即构实时音视频sdk,可快速实现视频聊天功能,不限开发语言。

⑷ PHP如何实现聊天室

1,配置文件

复制代码代码如下:

<?php
define('PATH',dirname($_SERVER['SCRIPT_NAME'])); //聊天室目录
define('CHAT_NAME','PHP聊天室'); //聊天室名称
define("MESS", "mess.txt"); //聊天信息
define("PERSON", "person.txt"); //在线人名单
define("RETIME",3); //刷新时间
define("LINE",11); //公共窗口显示的行数
define("PRLINE",5); //私聊窗口显示的行数
define("MAX",50); //聊天室人数限制
define("MAXTIME",600000); //最大不发言时间,单位是毫秒
define("WELCOME","<font color=blue>欢迎光临".CHAT_NAME.",请遵守聊天室规则,不要恶意刷新,不要使用不文明用语。</font>"); //欢迎语
?>

2,公共函数文件
(1)chklogin()函数检查用户昵称是否重复。参数$user是登录用户的昵称。当函数返回值为True时,昵称不可用;返回值为False时,昵称可用。

复制代码代码如下:

function chklogin($file,$user){
$boo = false;
if(file_exists($file)){
$userarr = file($file);
/* 判断昵称是否重复 */
foreach($userarr as $value){ //判断昵称是否重复
$tmparr = explode('#',$value); //使用“#”作为分隔符来拆分字符串
if($user == $tmparr[0]){ //如果用户数组中包含此用户
$boo = true;
break;
}
}
}
return $boo;
}

(2)addlogin()函数将登录的用户昵称写入文件中,保存格式为:昵称#IP#性别,参数$file是保存的文件地址,$user是用户昵称,$ip是登陆IP,$sex表示用户性别。

复制代码代码如下:

function addlogin($file,$user,$ip,$sex){
$tmp = $user.'#'.$ip.'#'.$sex.chr(13).chr(10); //chr(13) 是一个回车,Chr(10) 是个换行符,chr(32) 是一个空格符
$fp = fopen($file,'a'); //写入方式在文件末尾追加信息
$boo = fwrite($fp,$tmp);
fclose($fp);
return $boo;
}

(3)storeuser()函数的作用是将用户信息存为一个数组。格式为“用户名,用户性别”,参数$file是用户列表文件。代码如下:

复制代码代码如下:

function storeuser($file){
$tmparr = file($file); //将文件内容写入数组
$userarr = array(); //创建数组
foreach($tmparr as $value){ //循环输出数组内容
$tmparr = explode('#',$value); //使用#拆分字符串
$userarr[] = $tmparr[0].','.$tmparr[2]; //将用户名和用户性别保存到新数组中
}
return $userarr;
}

(4)addmess()函数将发言内容写入文件中。参数$file是保存的文件地址,$mess是要保存的内容

复制代码代码如下:

function addmess($file,$mess){
$fp = fopen($file,'a'); //以追加的形式打开文件
$boo = fwrite($fp,$mess.chr(13).chr(10)); //将信息写入文件中
fclose($fp); //关闭文件
return boo;
}

(5)deluser()函数的作用是删掉用户。参数$file是保存的文件地址,$user是要删除的用户

复制代码代码如下:

function deluser($file,$user){
$tmparr = file($file); //将文件内容写入数组
$rearr = array(); //创建数组
foreach($tmparr as $value){ //循环输出数组内容
$tmp = explode('#',$value); //使用#拆分字符串
if($tmp[0] != $user){ //如果变量中的用户名和当前用户不相等
$rearr[] = $value; //将该用户信息保存到新数组中
}
}
$fp = fopen($file,'w+'); //以只写的方式打开文件
foreach($rearr as $value){ //循环数组
fwrite($fp,$value); //写入数组内容
}
fclose($fp); //关闭文件
}

(6)getRows()函数的作用是返回文件的行数,参数$file是文件名

复制代码代码如下:

function getRows($file){
if(file_exists($file)){ //如果文件存在
$fl = file($file); //将文件按行写入数组
return count($fl); //求出数组长度并返回
}else{
return 0; //如果文件不存在,返回0

⑸ php如何实现语音聊天 - PHP进阶讨论

找到php的音频转换工具,基于html5开发的android和ios的app应用上实现语音聊天功能也就理论上打通了。
1. 用phonegap封装成android应用,phonegap官网上有详细介绍
2.实现js和android原生语言java的通信(google有介绍)
3.调用原生语言实现录音功能(mediaRecorder类),录音格式为 amr格式(android本身支持的语言)
4.回调js方法,把amr文件地址传给phonegap,利用phonegap读取录音文件并上传到服务器端
5.服务器端利用ffmpeg2theora 将amr转为html5支持的音频格式ogg
6.接下来读取文件,利用html5的audio 播放ogg文件。

⑹ php聊天室程序怎么用阿。

网页的聊天室没有什么价值,那有飞秋、FICQ、RTX这些好玩呢。

如果是为了学习网页技术,我建议你去下载一个“江湖”游戏,核心是一个聊天室,但是里面增加了一些游戏,可能那样有人会来玩,也更有利于提高你学习的激情。

⑺ 用php去写如QQ,微信这样的聊天社交软件的服务端可行么

功能上是可以实现的,而且代码量更少,但是!核心问题就是如果你用php写的话用户少还没问题,用户多了,百万估计就不行了,消息延迟,卡死现象就多。用户体验就很差,就凉凉了。你个人玩或小范围还是可以的,而且现在有这种框架,workerman或swoole都可以。望采纳!

⑻ php怎么结合websocket实现网络聊天

php有可用的websocket库,不需要php-fpm。
目前比较成熟的有swoole(swoole.com),和workman(workman.net)
swoole是c写的php扩展, 效率比nodejs还要高,workman是纯php实现,两者都号称可以实现并发百万TCP连接。
给你个例子:
这个要通过cmd运行的 具体带的参数有点忘记了
<?php
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();

//创建一个socket连接 设置参数 绑定 监听 并且返回
$master = WebSocket("localhost",12345);

//标示是否已经进行过握手了
$is_shaked = false;

//是否已经关闭
$is_closed = true;

//将socket变为一个可用的socket

while(true){
//如果是关闭状态并且是没有握手的话 则创建一个可用的socket(貌似第二个条件可以去除)
if($is_closed && !$is_shaked){
if(($sock = socket_accept($master)) < 0){
echo "socket_accept() failed: reason: " . socket_strerror($sock) . "\n";
}

//将关闭状态修改为false
$is_closed = false;
}

//开始进行数据处理
process($sock);
}

//处理请求的函数
function process($socket){
//先从获取到全局变量
global $is_closed, $is_shaked;

//从socket中获取数据
$buffer = socket_read($socket,2048);

//如果buffer返回值为false并且已经握手的话 则断开连接
if(!$buffer && $is_shaked){
disconnect($socket);
}else{
//如果没有握手的话则握手 并且修改握手状态
if($is_shaked == false){
$return_str = dohandshake($buffer);
$is_shaked = true;
}else{
//如果已经握手的话则送入deal函数中进行相应处理
$data_str = decode($buffer); //解析出来的从前端送来的内容
console($data_str);
$return_str = encode(deal($socket, $data_str));
//$return_str = encode($data_str);
}

//将应该返回的字符串写入socket返回
socket_write($socket,$return_str,strlen($return_str));
}
}

function deal($socket, $msgObj){
$obj = json_decode($msgObj);
foreach($obj as $key=>$value){
if($key == 'close'){
disconnect($socket);
console('close success');
return 'close success';
}else if($key == 'msg'){
console($value."\n");
return $value;
}
}
}

//获取头部信息
function getheaders($req){
$r=$h=$o=null;
if(preg_match("/GET (.*) HTTP/" ,$req,$match)){ $r=$match[1]; }
if(preg_match("/Host: (.*)\r\n/" ,$req,$match)){ $h=$match[1]; }
if(preg_match("/Origin: (.*)\r\n/",$req,$match)){ $o=$match[1]; }
if(preg_match("/Sec-WebSocket-Key: (.*)\r\n/",$req,$match)){ $key=$match[1]; }
if(preg_match("/\r\n(.*?)\$/",$req,$match)){ $data=$match[1]; }
return array($r,$h,$o,$key,$data);
}

function WebSocket($address,$port){
$master=socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("socket_create() failed");
socket_set_option($master, SOL_SOCKET, SO_REUSEADDR, 1) or die("socket_option() failed");
socket_bind($master, $address, $port) or die("socket_bind() failed");
socket_listen($master,20) or die("socket_listen() failed");
echo "Server Started : ".date('Y-m-d H:i:s')."\n";
echo "Master socket : ".$master."\n";
echo "Listening on : ".$address." port ".$port."\n\n";
return $master;
}

function dohandshake($buffer){
list($resource,$host,$origin,$key,$data) = getheaders($buffer);
echo "resource is $resource\n";
echo "origin is $origin\n";
echo "host is $host\n";
echo "key is $key\n\n";

$response_key = base64_encode(sha1($key.'258EAFA5-E914-47DA-95CA-C5AB0DC85B11', true));

$return_str = "HTTP/1.1 101 Switching Protocols\r\n".
"Upgrade: websocket\r\n".
"Connection: Upgrade\r\n".
"Sec-WebSocket-Accept: $response_key\r\n\r\n";
return $return_str;
}

function console($msg){
$msg = transToGBK($msg);
echo "$msg\n";
return $msg;
}

function decode($msg="") {
$mask = array();
$data = "";
$msg = unpack("H*",$msg);

$head = substr($msg[1],0,2);

if (hexdec($head{1}) === 8){
$data = false;
} else if (hexdec($head{1}) === 1){
$mask[] = hexdec(substr($msg[1],4,2));
$mask[] = hexdec(substr($msg[1],6,2));
$mask[] = hexdec(substr($msg[1],8,2));
$mask[] = hexdec(substr($msg[1],10,2));

$s = 12;
$e = strlen($msg[1])-2;
$n = 0;
for ($i= $s; $i<= $e; $i+= 2){
$data .= chr($mask[$n%4]^hexdec(substr($msg[1],$i,2)));
$n++;
}
}

return $data;
}

function encode($msg=""){
$frame = array();
$frame[0] = "81";
$msg .= ' is ok';
$len = strlen($msg);
$frame[1] = $len<16?"0".dechex($len):dechex($len);
$frame[2] = ord_hex($msg);
$data = implode("",$frame);
return pack("H*", $data);
}

function transToGBK($s){//UTF8->GBK
//echo $s;
return iconv("UTF-8", "GBK", $s);
return $s;
}

function ord_hex($data){
$msg = "";
$l = strlen($data);

for ($i=0; $i<$l; $i++){
//ord是返回字符串第一个字符的ascii值
//dechex把十进制转换为十六进制
$msg .= dechex(ord($data{$i}));
}

return $msg;
}

function disconnect($socket){
global $is_shaked, $is_closed;
$is_shaked = false;
$is_closed = true;
socket_close($socket);
}
?>

⑼ 用PHP 和 JS 开发一个简单的在线聊天程序,有哪些简单的思路

不考虑实用性的话 这个很简单的。
前段ajax,定时器,DOM修改。
php 文件操作就够了
前段定时器监控php检测文件最后的修改时间。和上一次修改时间对比。
有修改 直接把最后一行读取出来 也就是最新的消息。
发送的时候存入文件里面。
简单的玩玩还行 并发是个问题

阅读全文

与php聊天工具相关的资料

热点内容
dos选择命令 浏览:16
apm固件编译到单片机 浏览:120
联通深蓝卡都包含什么app 浏览:263
如何判断网络服务器正常 浏览:649
路由器搭桥远端服务器地址是什么 浏览:515
编译动态库时会连接依赖库吗 浏览:707
淘宝手机加密是随机的吗 浏览:672
解压包子怎么装饰 浏览:585
四个数凑24算法 浏览:676
哪一种不是vi编译器的模式 浏览:169
xp在此处打开命令窗口 浏览:128
代码编译运行用什么软件 浏览:998
动态库在程序编译时会被连接到 浏览:761
python超简单编程 浏览:259
获取命令方 浏览:977
怎样制作文件夹和图片 浏览:60
调研编译写信息 浏览:861
python冯诺依曼 浏览:419
同时安装多个app有什么影响 浏览:254
奥术杀戮命令宏 浏览:184