當前位置:首頁 » 編程語言 » php聊天室

php聊天室

發布時間: 2022-01-14 20:42:33

1. 誰能告訴我用php如何實現單用戶聊天室系統到多用多房間聊天室系統的轉變請告訴我詳細的代碼(不要讓我...

朋友,我來告訴你答案!實現「聊天室對象」,「房間對象」,「用戶對象」
聊天室對象中包含房間對象池和用戶對象池
在聊天室中開啟不同房間時,只是在房間對象池中新實例化一個房間對象。
在用戶進入這個聊天房間時,在房間對象的用戶對象池中引用聊天室用戶對象池中用戶對象。
用戶對象池中包含一系列實例化的用戶對象。每個用戶對象包含一個聊天室列表對象,聊天室列表包含用戶進入時間,最後一次發言時間等信息
實現用戶長時間未操作與正常退出的用戶對象移除操作,實現房間的發言操作延長時長即可。
在聊天室用戶對象池中維護用戶當前已登錄的聊天房間數、登錄時間等信息

2. PHP聊天室

可以看下socket類型的php框架,比如swoole和workerman,workerman下面有個
workerman-chat
php聊天室和php小蝌蚪聊天室的demo可以下載源碼參考參考

3. 基於PHP+MYSQL聊天室如何實現只顯示用戶登陸之後的聊天內容

顯示用戶登陸之前的聊天內容是因為公用緩存的問題,比如每隔一分鍾緩存一次,然後每個用戶要的內容都從緩存里取,而不是都查庫,你可以根據發表時間和登錄時間做個比較再輸出

4. 用php socket製作聊天室。

何必自討苦吃呢?php 製作聊天室,關鍵技術是頁面局部自動刷新。
通過php ajax技術,就可以完美的達到你的要求。
具體原理如下,在網頁聊天框,被ajax調用,ajax傳遞參數一個php頁面,這個頁面同時調用資料庫,將資料庫中新內容返回到頁面聊天框中。
然後你可以自己調時間了,是20秒訪問一次資料庫,還是10秒訪問一次資料庫。
至於php的socket技術,說實話,我接觸php 8年了,沒碰過。
我想,關鍵不是用什麼技術,關鍵是解決問題。
希望對你有用。

5. php做語音聊天室的具體方法有嗎求分享

可以去找ZEGO即構科技,他們支持php做語音聊天室,並且快速便捷,支持多種語言框架,例如React Native、javaScript 、Swift、Electron、Flutter等多種語言框架。

6. php聊天室如何實現區域網多機互聯

區域網多機互聯?你可以做成網站形式的,用帳號登陸,只要別人能訪問你的網站伺服器不就等於互聯了,何必說區域網呢,區域網搭建內部網站相當簡單的

7. php 聊天室刷新問題

不刷新的聊天室,首先你保存內容的chat.txt文件要修改,要增加一列保存消息ID,這個ID是自動增加,永不重復的,不知道你現在的是怎麼設計,可以如下:
消息ID|說話人|說話對象|消息內容

有發送消息的程序修改這個文件,控制只保留10條內容,有人發消息時候,把消息放到文件最後,刪除文件前面的信息,文件最多10行,這個代碼並不復雜,你應該會寫的。

刷新框隱藏不顯示,反復刷新,每次刷新後把獲取的內容提交給消息框,例如刷新框的代碼可以如下:
<script type=text/javascript>
<?php
foreach (file('chat/chat.txt') as $line){
list($id,$from,$to,$msg)=explode('|',$line);
echo "msg_frame.add_msg($id,'$from','$to','$msg');\r\n";
//注意:msg_frame是消息框的名稱。
}
?>
</script>

消息框不刷新,編寫一個添加消息的函數,等著刷新框來調用,例如內容如下:
<div id=msg></div>
<script type=text/javascript>
var maxid=0;
function add_msg(id,from,to,msg){
if (id>maxid) {
maxid=id;
if (to=='') to='大家';
s='<p>'+from+'對'+to+'說:'+msg+'</p>';
document.getElementById('msg').innerHTML+=s;
}
}
</script>

8. 製作一個php的登陸頁面 無需連接資料庫 只需要昵稱就能進入的聊天室

這里假設你的主頁是index.php,登錄前頁面是login.php,用戶名user1的密碼為123。當然,給你提供的是PHP方法,所以你必須配置好了PHP並且每頁都必須是PHP。
每個需要登錄後查看的頁面的開始寫(一定要最開始,前面不能有任何字元包括回車或者空格)
<?php session_start();if(!isset($_SESSION['pass']))header("Location: login.php");?>
在登錄頁面最開始寫:
<?php session_start();$usr=array('user1'=>'123','user2'=>'456');if(isset[$_POST['usr']]&&isset[$_POST['pwd']]&&isset[$usr[$_POST['usr']]]&&$_POST['pwd']==$usr[$_POST['usr']])$_SESSION['pass']=1;if(isset($_SESSION['pass']))header("Location: index.php");?>
登錄頁內容里必須有form元素具有method屬性值為post。
form元素里必須具有兩個input具有name屬性值分別為usr和pwd,最後一個按鈕建議用input type=submit。例如:
<form method="post">
Name: <input name="usr"/><br/>
Password: <input name="pwd"/><br/>
<input type="submit" value="login"/>
</form>
直接寫的沒測試,希望能正確吧。

9. 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

10. php聊天室怎麼設置禁言

思路如下

  • 在資料庫添加一個禁言欄位,根據這個欄位是否禁言。

  • 例如資料庫欄位為Speaking,如果值為1,則禁言該用戶在聊天室發言,如果值為0,則允許發言。

  • 管理員對所有用戶禁言則把這個欄位的所有用戶欄位設為1則可。

熱點內容
單片機android 發布:2024-09-20 09:07:24 瀏覽:760
如何提高三星a7安卓版本 發布:2024-09-20 08:42:35 瀏覽:661
如何更換伺服器網站 發布:2024-09-20 08:42:34 瀏覽:308
子彈演算法 發布:2024-09-20 08:41:55 瀏覽:286
手機版網易我的世界伺服器推薦 發布:2024-09-20 08:41:52 瀏覽:814
安卓x7怎麼邊打游戲邊看視頻 發布:2024-09-20 08:41:52 瀏覽:160
sql資料庫安全 發布:2024-09-20 08:31:32 瀏覽:91
蘋果連接id伺服器出錯是怎麼回事 發布:2024-09-20 08:01:07 瀏覽:505
編程鍵是什麼 發布:2024-09-20 07:52:47 瀏覽:655
學考密碼重置要求的證件是什麼 發布:2024-09-20 07:19:46 瀏覽:479