php 聊天室 源码之家,PHP实现简单聊天室(附源码)第2/2页

[wName][,wFeature][,wReplace])

参数page表示要打开的网页。

参数wName表示要打开窗口的名称,可以是_blank、_parent等属性值,也可以是自定义名称。

参数wFeatures表示要打开的窗口的样式。

属性值如下:fullscreen:yes,no,1,0;是否全屏

top:number;新窗口到上边界的距离

left:number;新窗口到左边界的距离

width:number;新窗口的宽度

height:number;新窗口的高

location:yes,no,1,0;是否显示地址栏

menubar:yes,no,1,0;是否显示菜单栏

resizable:yes,no,1,0;是否可以改变大小

scrollbars:yes,no,1,0;是否显示滚动条

status:yes,no,1,0;是否显示状态条

toolbar:yes,no,1,0;是否显示工具条

directories:yes,no,1,0;是否显示链接

(2)屏蔽键

屏蔽键,是通过触发键盘按下事件(onkeydown)来控制的。当用户按键时,系统对event对象中的keyCode属性判断按键。如果是键,则弹出警告框,并将按键设置为0。键的键值为116.

//禁止刷新

function enterkey(){

if(event.keyCode == 116){ //如果按键是F5键

alert('禁止刷新');  //弹出警告框

event.keyCode = 0;  //将按键归零

return false;

}

}

document.οnkeydοwn=enterkey; //将函数赋值给onkeydown事件

(3)屏蔽鼠标右键屏蔽鼠标右键有两种方法,第一种是通过event.button属性判断,如果button等于2,说明按下的是鼠标右键。该方法通过onmousedown时间来触发。

//禁止鼠标右键

function mouseright(){

if(event.button==2){

alert('禁止鼠标右键');

return false;

}

}

document.οnmοusedοwn=mouseright;

但这种方法有一个漏洞,当用户单击鼠标右键,弹出警告框的时候,鼠标右键不松开,按回车键关闭警告窗口后,再松开鼠标右键,这是窗口还是会弹出来。

第二种方法是使用oncontextmenu事件调用event对象中的returnValue属性。oncontextmenu事件是用户在单击鼠标右键时,弹出一个菜单,而returnValue属性则可以取消事件。

6,监控客户端浏览器在PHP中有一个函数ignore_user_abort()函数,当函数设置为True时,即使PHP页被关闭,页面代码还是会继续被执行。ignore_user_abort(true);

而connection_aborted()函数则可以监控客户端浏览器是否是断开的。int connection_aborted(void),当函数返回True时,说明客户端浏览器已经被断开。

使用该函数可以实现自动更新用户列表、删除掉线用户的功能。

二,聊天室1,配置文件

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","欢迎光临".CHAT_NAME.",请遵守聊天室规则,不要恶意刷新,不要使用不文明用语。");  //欢迎语

?>

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

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值