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

聊天室php

發布時間: 2024-03-05 09:30:36

⑴ 教你巧用php+Mysql搭建一個聊天室

MySQL並發能力強 響應速度快 是性能優異的資料庫軟體;PHP是功能強大的伺服器端腳本語言 筆者在山西鋁廠網站開發中 採用PHP +MySQL 建立了多種應用 下面 以一個簡單的聊天室設計為例 介紹PHP+MySQL在網頁開發中的應用

總體設計

構思與規劃:

聊天室的基本原理 就是把每個連上同一網頁的用戶傳送的發言數據儲存起來 然後將所有的發言數據傳給每一用戶 也就是說 用資料庫匯集每個人的發言 並將資料庫中的數據傳給每一個人就實現了聊天室的功能

表設計

首先使用MySQL建立表chat用來儲存用戶的發言:

mysql> CREATE TABLE chat > (chtime DATATIME > nick CHAR( ) NOT NULL >words CHAR( ));

表中只設定了三個域 chtime是發言的時間 nick為發言者的昵稱 words是發言的內容 發言最多 個字元

網頁設計

一個最簡單的聊天室通常需要兩個頁框:一個頁讓虧框是用戶輸入發言的表單 另一個用來顯示大家的發言 所以代碼段通常至少需要如下幾段:

建立頁框的結構(main php)

顯示大家發言的程序段(cdisplay php)

傳送用戶發言的程序段(speak php)

用戶登錄進入聊天室程序段(login php)

代碼設計

以上規劃完成後 就可以著手代碼設計了 採用php可以非常簡明實現以上的功能

用戶登錄login php 本段代碼是一個完全HTML網頁

<> <head> <title>用戶登錄</title> </head> <body>請輸入您的昵稱<br> <form action= main php method= post target= _self > <input type= text name= nick cols= > <input type= submit value= 登錄 > </body> </>

用戶提交自己的昵稱後 就進入到聊天室 以下的處理交由main php處理

頁框主體代碼段main php:

<? 迅李setcookie( nick $nick) //用cookie記錄用戶昵稱 是常用的傳遞變數方法 ?> <> <title>山西鋁廠聊天室試用版ver </title> <frameset rows= % * > <frame src= cdisplay php name= chatdisplay > <frame src= speak php name= speak > </frameset> </>

顯示發言cdisplay php

本代碼段的任務是將表chat中的數據取出 顯示在頁框中 每次刷新時 取資料庫中最近的 條發言 同時 為防止資料庫無限增大 需設計刪除陳舊數據的功能 代碼如下

<> <head> <title>顯示用戶發言</title> <meta equiv= refresh content= ;url=cdisplay php > </head> <body> <? $link_ID=mysql_connect( main root ); //鏈接Mysql伺服器 伺服器名為main 管理員名為root 畝滑遲mysql_select_db( abc ); //選擇資料庫 $str= select * from chat ORDER BY chtime; ; //查詢字元串 $result=mysql_query($str $link_ID); //送出查詢 $rows=mysql_num_rows($result); //取得查詢結果的記錄筆數 //取得最後 筆發言 並顯示 @mysql_data_seek($resut $rows ); //移動記錄指針到前 筆記錄 if ($rows< ) $l=$rows; else $l= ; //記錄總數小於 則最多為該記錄數 for ($i= ;$i<=$l;$i++) { list($chtime $nick $words)=mysql_fetch_row($result); echo $chtime; echo ;echo $nick; echo : ; echo $words; echo <BR> ; } //清除庫中過時的數據 @mysql_data_seek($result $rows ); //移動記錄指針到前 筆記錄 list($limtime)=mysql_fetch_row($result); $str= DELETE FROM chat WHERE chtime< $limtime ; ; $result=mysql_query($str $link_ID); //送出查詢字元串 庫中只留前 個記錄 mysql_close($link_ID); ?> </body> </>

送出發言到資料庫speak php

<> <head> <title>發言</title> </head> <body> <? If ($words) { $link_ID=mysql_connect( main root ); mysql_select_db( abc ); //資料庫名為abc $time=date(y) date(m) date(d) date(h) date(i) (date(s); //取得當前時間 $str= INSERT INTO chat(chtime nick words) values ( $time $nick $words ); ; mysql_query($str $link_ID); //送出發言到資料庫 mysql_close($link_ID); } ?> //輸入發言的表單 <form action= speak php method= post target= _self > <input type= text name= words cols= > <input type= submit value= 發言 > </form> </body> </>

lishixin/Article/program/PHP/201311/21516

⑵ 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的登陸頁面 無需連接資料庫 只需要昵稱就能進入的聊天室

這里假設你的主頁是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>
直接寫的沒測試,希望能正確吧。

熱點內容
androidstudio同步 發布:2024-11-29 04:37:50 瀏覽:114
python用什麼 發布:2024-11-29 04:37:40 瀏覽:792
w10系統如何搭建ftp伺服器 發布:2024-11-29 04:37:36 瀏覽:789
python模擬訪問網頁 發布:2024-11-29 04:33:21 瀏覽:227
除了安卓還有什麼可以下載的 發布:2024-11-29 04:05:44 瀏覽:381
coreldraw用戶臨時文件夾 發布:2024-11-29 04:05:44 瀏覽:740
如何設置ipad文件夾 發布:2024-11-29 03:59:16 瀏覽:141
如何給u盤文件夾加密 發布:2024-11-29 03:48:37 瀏覽:693
傳奇打元寶腳本 發布:2024-11-29 03:39:52 瀏覽:843
如何裝linux系統 發布:2024-11-29 03:38:17 瀏覽:183