用PHP+MySql編寫聊天室_PHP教程

來源:互聯網
上載者:User
大家好!好久沒有看到大家了,上次寫了用PHP的通過檔案操作的聊天室,當然是漏洞百出的,而且每一次重新整理螢幕都很糟糕的!我想了好久,是不是能有一種方法不要重新整理,就能取得發言的資訊了?多用一個架構就能實現這個效果了,即多用一個架構我們稱為getmsg,我們讓getmeg去取得資訊而且保證每一次取得的資訊是最新的,就是上次取得的發言就不要了,上次我編的就是每一次取得資訊都是重複的,這樣效果不好。
我的設計思想是:每一次發言,都把它提交到伺服器上,然後儲存到一個資料庫裡,每格幾秒鐘getmsg就去伺服器上取得 最新發言資料,並保證上次取得的發言就不要取下來了,然後把取下來的發言疊加到一個專門顯示發言的視窗(listmsg)去。這樣我們就感覺listmsg視窗不會有重重新整理的感覺而且,只是看到發言資訊不斷加進去,這樣就有很好的效果,
怎樣在一個架構把資訊加到另個架構去了?用JavaScript就可以實現這個想法的:

當然你得在mysql裡建兩個表,一個表用於儲存發言資訊,一個表用於儲存幾個線上的,在列線上人數時,我們讓它每個60秒重新整理一次,並把一分鐘以前的發言刪掉,並看某個發言人是不是很長時間沒發言了,是的話,就刪掉他,
由於表的子段很簡單,在這裡就不要寫出來了,看程式就會知道了。這個程式在網上網下測試的效果都很好!
表的名字是:chat和chat_getmsg

if(!isset($username))
$username="guest";
$conid=mysql_connect("localhost","yourcounter","password");
mysql_select_db("yourdadabase",$conid);
$dstr=date("YmdHis");
$sql="insert chat_getmsg (username,shijian) values ('$username','$dstr')";
mysql_query($sql,$conid);
$sql="update chat_getmsg set shijian='$dstr' where username='$username'";
mysql_query($sql,$conid);
mysql_close($conid);
?>


Untitled Document








n"; ?>
n"; ?>


<body bgcolor="#FFFFFF"> <br><br></body>


if(!isset($username))
$username="guest";
if(!isset($yanse))
$yanse="blue";
if(!isset($objectname))
$objectname="大家";
?>


Untitled Document









if(isset($username)&&isset($fayan)){
$conid=mysql_connect("localhost","yourcount","yourpassword");
mysql_select_db("database",$conid);
$sql="insert chat (username,objectname,action,msg,color) values ("$username","$objectname","NO","$fayan","$yanse")";
mysql_query($sql,$conid);
mysql_close($conid);
}
?>



Untitled Document

$conid=mysql_pconnect("localhost","yourcount","password");
mysql_select_db("database",$conid);

if(!isset($username))
$username="getmsg";
$dt=time();
$newdate=date("YmdHis",$dt);
$fromdate=date("YmdHis",$dt-6);;

$sql="select username as name,msg,action,objectname ,shijian,color from chat where shijian>="$fromdate"";
$res=mysql_query($sql,$conid);

echo "n";
echo "n";

echo "n";
?>







Untitled Document

if(!isset($username))
$username="guest";
echo "n";
echo "n";

echo "n";
?>






Untitled Document







歡迎光臨












Untitled Document







線上人數


if(!isset($username))
$username="guest";
$dt=time();
$newdate=date("YmdHis",$dt);
$fromdate=date("YmdHis",$dt-200);
$linkid=mysql_connect("localhost","yourcount","password");
mysql_select_db("yourdatabase",$linkid);
$sql="update chat_getmsg set shijian="$newdate" where username="$username"";
mysql_query($sql,$linkid);
$sql="select username from chat_getmsg where shijian>="$fromdate"";
$res=mysql_query($sql,$linkid);
while(list($username)=mysql_fetch_row($res)){
echo "$username
n";
$fromdate=date("YmdHis",$dt-100);
$sql="delete from chat where shijian<="$fromdate"";
mysql_query($sql,$linkid);
mysql_close($linkid);
}
?>






【本文著作權歸作者與奧索網共同擁有,如需轉載,請註明作者及出處】

http://www.bkjia.com/PHPjc/316487.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/316487.htmlTechArticle大家好!好久沒有看到大家了,上次寫了用PHP的通過檔案操作的聊天室,當然是漏洞百出的,而且每一次重新整理螢幕都很糟糕的!我想了好久...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.