1,聊天室主页面窗口设置
代码如下:
(2)页面元素中的滚动条
页面元素中的滚动条可以用scrollTop属性来实现定位。scrollTop属性表示当前对象的顶点距离其最外层对象元素的距离。语法如下: 在聊天室公共窗口中的滚屏效果,就是使用的该属性来定位滚动条。公共窗口使用一个div层来显示聊天信息。首先将div层的纵向滚动条设为自动,横向滚动条设为无并自动换行。 代码如下:在Javascript中设置纵向滚动条的scrollTop属性等于它滚动高度(定位到聊天窗口的最下面) 代码如下: 5,屏蔽刷新技术
屏蔽刷新,就是屏蔽 键、屏蔽鼠标右键和隐藏浏览器中的“刷新”按钮3部分。每个部分使用的技术都不相同。
(1)隐藏“刷新”按钮
open()函数的作用是打开一个新窗口,并可以对窗口样式进行设置。 Open()函数的语法格式如下: op=window.open([wName][,wFeature][,wReplace]) 参数page表示要打开的网页。 参数wName表示要打开窗口的名称,可以是_blank、_parent等属性值,也可以是自定义名称。 参数wFeatures表示要打开的窗口的样式。
属性值如下:
fullscreen:yes,no,1,0;是否全屏 top:number;新窗口到上边界的距离 left:number;新窗口到左边界的距离 width:number;新窗口的宽度 height:number;新窗口的高 location:yes,0;是否显示地址栏 menubar:yes,0;是否显示菜单栏 resizable:yes,0;是否可以改变大小 scrollbars:yes,0;是否显示滚动条 status:yes,0;是否显示状态条 toolbar:yes,0;是否显示工具条 directories:yes,0;是否显示链接
(2)屏蔽键 屏蔽键,是通过触发键盘按下事件(onkeydown)来控制的。当用户按键时,系统对event对象中的keyCode属性判断按键。如果是键,则弹出警告框,并将按键设置为0。键的键值为116. 代码如下://禁止刷新
document.onkeydown=enterkey; //将函数赋值给onkeydown事件
(3)屏蔽鼠标右键
屏蔽鼠标右键有两种方法,第一种是通过event.button属性判断,如果button等于2,说明按下的是鼠标右键。该方法通过onmousedown时间来触发。 代码如下:
但这种方法有一个漏洞,当用户单击鼠标右键,弹出警告框的时候,鼠标右键不松开,按回车键关闭警告窗口后,再松开鼠标右键,这是窗口还是会弹出来。 第二种方法是使用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 } }
下载: (编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|