システムの主要なテクノロジーについては上で紹介しましたが、具体的な実装については以下で詳しく説明します
1. 開発中、多くの場合、次のようなシステム パラメータを保存するために構成ファイルを使用する必要があります。データベース接続情報などこれにより、サーバーの変更など、システム構成が変更された場合に、各ページに散在するデータベース接続情報を変更する必要がなく、構成ファイルのみを変更する必要があります。
データベース接続情報を保存するには、以下のシステム構成ファイル sys_conf.inc を作成します:
1 <!--sys_conf.inc:系统配置文件------------------------------>2 <?php3 //数据库配置全局变量4 $DBHOST="localhost";5 $DBUSER="root";6 $DBPWD="";7 $DBNAME="my_chat";8 ?>
require() または include() 関数を通じて他のページで sys_conf.inc ファイルを参照し、データベース構成情報を取得できます。 。
行 4 ~ 7 はそれぞれ $DBHOST、$DBUSER、$DBPWD、$DBNAME を定義しており、それぞれデータベース サーバー名、ログイン ユーザー名、パスワード、データベース名を保存するために使用されます。必要に応じて変更できます。
2. ログインインターフェイス (login.php)
<!--login.php:My聊天室用户登录页面-----------------------><html> <head> <title>用户登录</title> </head> <body> <center> <h1>欢迎来到My聊天室</h1> <h2>请输入您的昵称<h2> <form action="main.php" method="post" target="_self"> <input type="text" name="nick" cols="20"> <input type="submit" value="登录"> </form> </center> </body></html>
注: 行 11 ~ 13 は、ユーザーがログインするときのニックネーム入力ボックスのニックネームと送信ボタンを含むフォームを定義します。このボタンが押されると、フォームの action 属性を通じて、ページは post メソッドを使用してメイン チャット ページ main.php にニックネーム入力ボックスの情報を送信します
3. チャット ルーム メイン ページ (main.php) ):
HTML フレーム テクノロジの使用が必要です。ブラウザ全体が複数の独立したページに分割され、各ページはフレームの 1 つとなり、互いに独立しているため、ページはメッセージ ページとともに自動的に更新されません。
<?php session_start(); //装载Session库,一定要放在首行 $user_name=$_POST["nick"]; session_register("user_name"); //注册$user_name变量,注意没有$符号 ?><!--chat.php:My聊天室主页面-----------------------><html> <title>My聊天室</title> <frameset rows="80%,*"> <frame src="chat_display.php" name="chat_display"> <frame src="speak.php" name="speak"> </frameset></html>
行 10 ~ 13 ではフレームを使用して、ブラウザ ウィンドウ全体に 2 つのページ、つまりメッセージ表示ページ chat_display.php とユーザーの音声ページ speech.php が含まれるようにします。このようにして、自動更新の問題を chat_display.php に独立して配置できます。
4. 音声ページ (chat_display.php) を表示します
1 <!--chat_display.php:显示留言页面-----------------------> 2 <html> 3 <head> 4 <title>显示用户留言</title> 5 <meta http-equiv="refresh" content="5;url=chat_display.php"> 6 </head> 7 <body> 8 <?php 9 require_once("sys_conf.inc"); //系统配置文件,包含数据库配置信息10 11 //连接数据库12 $link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD); 13 mysql_select_db($DBNAME); //选择数据库my_chat14 $str="select * from chat ORDER BY create_time;"; //按找发表时间查找所有聊天信息15 $result=mysql_query($str, $link_id); //执行查询16 $rows=mysql_num_rows($result); //取得查询结果的记录笔数17 18 //取得最后15个发言,并显示19 @mysql_data_seek($resut,$rows-15); //移动记录指针到前15笔记录20 if ($rows<15) $l=$rows; else $l=15; //记录总数小于15,则最多为该记录数21 for ($i=1;$i<=$l;$i++) 22 {23 list($cid,$author,$create_time,$text)=mysql_fetch_row($result);24 echo $create_time; echo " ";echo "【".$author."】"; echo"说到:" ; echo $text; echo "<BR>";25 }26 27 //清除库中过时的数据28 @mysql_data_seek($result,$rows-20); //移动记录指针到前20笔记录29 list($limtime)=mysql_fetch_row($result);30 $str="DELETE FROM chat WHERE create_time<'$limtime';" ;31 $result=mysql_query($str,$link_id); //执行查询字符串,库中只留最后20个记录32 33 //关闭数据库34 mysql_close($link_id);35 ?>36 </body>37 </html>
9 行目では、require_once() 関数を使用してデータベース接続情報を使用するシステム構成ファイルを導入します。
11 ~ 15 行目、mysql_query() 関数を使用してデータクエリを実行し、チャットテーブル内のすべてのデータを取得します
24 行目、「時間 + ユーザー + スピーチ内容」の形式でスピーチを出力します
行27-31 では、データベースの記憶容量を一定値に保つために、データベース内の古い音声情報を削除し、mysql_query() 関数を使用してサーバーにクエリを送信します。
5. 発言ページ (speak.php)
ユーザーの発言プロセスはデータベースを書き込むプロセスであり、ユーザーの発言情報、発言時間、ユーザー名がチャット テーブルに保存されます。これらのデータは、chat_display.php で読み取って表示できます。
1 <?php session_start(); ?> 2 <!--speak.php:用户发言页面-----------------------> 3 <html> 4 <head> 5 <title>发言</title> 6 </head> 7 <body> 8 <?php 9 require_once("sys_conf.inc"); //系统配置文件,包含数据库配置信息10 11 //发言12 if(isset($_POST["text"]))13 {14 //连接数据库15 $link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD); 16 mysql_select_db($DBNAME); //选择数据库my_chat17 $time=date("h:i:s");18 $author=$_SESSION["user_name"];19 $text=$_POST["text"];20 $str="INSERT INTO chat(create_time,author,text) values('$time','$author','$text')" ; 21 mysql_query($str,$link_id); //送出发言到数据库22 mysql_close($link_id);23 }24 ?>25 <!--输入发言的表单-->26 <form action="speak.php" method="post" target="_self">27 <input type="text" name="text" cols="20">28 <input type="submit" value="发言">29 </form>30 </body>31 </html>
1 行目では、session_start() 関数を使用してセッション ライブラリを初期化し、登録されたセッション変数 user_name を使用してユーザーのニックネームを取得できるようにします。 特定のデータベースの取得は、配列全体を使用して 18 行目で実装されます。 $_SEESSION。
9行目、require_once()関数を介してシステム構成ファイルを導入し、データベース接続情報を使用します。
12 ~ 23 行目はデータベースの挿入操作を実装しています。
26 ~ 29 行目は、音声入力ボックスのテキストと送信ボタン「Speak」を含む HTML フォームを定義しています。
この時点で、簡単なチャット ルームが完成します。現在のチャット ルーム メンバーのリストを表示するページを追加したり、絵文字を送信したり、ページをさらに美しくしたりするなど、好みに応じてパーソナライズされたデザインを作成できます。