ホームページ > バックエンド開発 > PHPチュートリアル > PHP_D4_「シンプルチャットルーム」の具体的な技術実装

PHP_D4_「シンプルチャットルーム」の具体的な技術実装

WBOY
リリース: 2016-06-23 13:11:02
オリジナル
760 人が閲覧しました

システムの主要なテクノロジーについては上で紹介しましたが、具体的な実装については以下で詳しく説明します

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 フォームを定義しています。

この時点で、簡単なチャット ルームが完成します。現在のチャット ルーム メンバーのリストを表示するページを追加したり、絵文字を送信したり、ページをさらに美しくしたりするなど、好みに応じてパーソナライズされたデザインを作成できます。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート