欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP實現簡單聊天室(附源碼)

 更新時間:2013年06月25日 10:09:22   作者:  
本篇文章是對PHP實現聊天室的源代碼進行了詳細的分析介紹,需要的朋友參考下
[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;是否顯示狀態(tài)條
toolbar:yes,no,1,0;是否顯示工具條
directories:yes,no,1,0;是否顯示鏈接

(2)屏蔽<F5>鍵
屏蔽<F5>鍵,是通過觸發(fā)鍵盤按下事件(onkeydown)來控制的。當用戶按鍵時,系統對event對象中的keyCode屬性判斷按鍵。如果是<F5>鍵,則彈出警告框,并將按鍵設置為0。<F5>鍵的鍵值為116.

復制代碼 代碼如下:

//禁止刷新
<script language="javascript">
function enterkey(){
 if(event.keyCode == 116){ //如果按鍵是F5鍵
  alert('禁止刷新');  //彈出警告框
  event.keyCode = 0;  //將按鍵歸零
  return false;
 }
}
</script>

document.onkeydown=enterkey; //將函數賦值給onkeydown事件

(3)屏蔽鼠標右鍵
屏蔽鼠標右鍵有兩種方法,第一種是通過event.button屬性判斷,如果button等于2,說明按下的是鼠標右鍵。該方法通過onmousedown時間來觸發(fā)。

復制代碼 代碼如下:

<script language="javascript">
//禁止鼠標右鍵
function mouseright(){
 if(event.button==2){
  alert('禁止鼠標右鍵');
  return false;
 }
}
document.onmousedown=mouseright;
</script>

但這種方法有一個漏洞,當用戶單擊鼠標右鍵,彈出警告框的時候,鼠標右鍵不松開,按回車鍵關閉警告窗口后,再松開鼠標右鍵,這是窗口還是會彈出來。
第二種方法是使用oncontextmenu事件調用event對象中的returnValue屬性。oncontextmenu事件是用戶在單擊鼠標右鍵時,彈出一個菜單,而returnValue屬性則可以取消事件。
復制代碼 代碼如下:

<body oncontextmenu=self.event.returnValue=false>

6,監(jiān)控客戶端瀏覽器
在PHP中有一個函數ignore_user_abort()函數,當函數設置為True時,即使PHP頁被關閉,頁面代碼還是會繼續(xù)被執(zhí)行。ignore_user_abort(true);
而connection_aborted()函數則可以監(jiān)控客戶端瀏覽器是否是斷開的。int connection_aborted(void),當函數返回True時,說明客戶端瀏覽器已經被斷開。
使用該函數可以實現自動更新用戶列表、刪除掉線用戶的功能。

二,聊天室
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);     //最大不發(fā)言時間,單位是毫秒
 define("WELCOME","<font color=blue>歡迎光臨".CHAT_NAME.",請遵守聊天室規(guī)則,不要惡意刷新,不要使用不文明用語。</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();  //創(chuàng)建數組
 foreach($tmparr as $value){  //循環(huán)輸出數組內容
  $tmparr = explode('#',$value); //使用#拆分字符串
  $userarr[] = $tmparr[0].','.$tmparr[2];  //將用戶名和用戶性別保存到新數組中
 }
 return $userarr;
}

(4)addmess()函數將發(fā)言內容寫入文件中。參數$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(); //創(chuàng)建數組
 foreach($tmparr as $value){  //循環(huán)輸出數組內容
  $tmp = explode('#',$value);  //使用#拆分字符串
  if($tmp[0] != $user){ //如果變量中的用戶名和當前用戶不相等
   $rearr[] = $value; //將該用戶信息保存到新數組中
  }
 }
 $fp = fopen($file,'w+'); //以只寫的方式打開文件
 foreach($rearr as $value){ //循環(huán)數組
  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 cookie 作用范圍–不要在當前頁面使用你的cookie

    php cookie 作用范圍–不要在當前頁面使用你的cookie

    這兩天在調試bug的時候遇到了一個問題,就是頁面莫名其妙的會跳轉到登陸頁面
    2009-03-03
  • php通過header發(fā)送自定義數據方法

    php通過header發(fā)送自定義數據方法

    下面小編就為大家分享一篇php通過header發(fā)送自定義數據方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • PHP+redis實現微博的拉模型案例詳解

    PHP+redis實現微博的拉模型案例詳解

    這篇文章主要介紹了PHP+redis實現微博的拉模型案例,結合具體實例形式詳細分析了php+redis獲取關注人最新信息的相關原理與操作技巧,需要的朋友可以參考下
    2019-07-07
  • PHP無刷新上傳文件實現代碼

    PHP無刷新上傳文件實現代碼

    PHP無刷新上傳文件實現代碼,使用php的朋友可以參考下。
    2011-09-09
  • PHP封裝PDO實現操作MySql數據庫

    PHP封裝PDO實現操作MySql數據庫

    數據庫操作類可以封裝數據庫連接和操作,使代碼更易于維護和擴展,這篇文章主要為大家詳細介紹了PHP如何封裝操作類PDO從而實現操作MySql數據庫的功能,需要的可以了解下
    2023-10-10
  • smarty的保留變量問題

    smarty的保留變量問題

    {$smarty}保留變量可以被用于訪問一些特殊的模板變量,以下是全部頁面請求變量。
    2008-10-10
  • 詳解PHP Swoole與TCP三次握手

    詳解PHP Swoole與TCP三次握手

    TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連接(連接導向)的、可靠的、 基于IP的傳輸層協議。TCP在IP報文的協議號是6。TCP是一個超級麻煩的協議,而它又是互聯網的基礎,也是每個程序員必備的基本功。本文將詳細介紹PHP Swoole與TCP三次握手。
    2021-05-05
  • PHP zip壓縮包操作類完整實例

    PHP zip壓縮包操作類完整實例

    這篇文章主要介紹了PHP zip壓縮包操作類,結合完整實例形式分析了php封裝的針對zip文件解壓、壓縮、遞歸創(chuàng)建、讀取等相關操作,需要的朋友可以參考下
    2018-06-06
  • php下通過偽造http頭破解防盜鏈的代碼

    php下通過偽造http頭破解防盜鏈的代碼

    這篇文章主要用于圖片,軟件等突破防盜鏈的方法,希望需要的朋友有所幫助,但不推薦這樣做,如果官方改版都是無法繼續(xù)使用的。
    2010-07-07
  • php去掉數組的key重組數組的四種方法

    php去掉數組的key重組數組的四種方法

    在PHP開發(fā)中數組是常用的數據結構之一,在處理數組時有時候需要去掉數組的key,只取數組中的值,這篇文章主要給大家介紹了關于php去掉數組的key重組數組的四種方法,需要的朋友可以參考下
    2023-12-12

最新評論