ネットでおしゃべり

何人かが集まってネットでおしゃべりします。
<a href="http://maedakobe.rw.xsi.jp/php/chat.php">ネットでおしゃべり</a><br>
次のリンクをクリックするとおしゃべりのページが呼び出されます。
ネットでおしゃべり

PHP で DataBase を使った掲示板を始めました。ホームページの要望や相互連絡に利用して下さい。
掲示板を呼び出す

ネットでおしゃべり

  1. サーバー上のファイル(message.txt)を通じてネットでおしゃべりをします。
    お友達と同時にページに接続して、リアルタイムに「ネットでおしゃべり」を楽しんで下さい。
    今回のように「複数のクライアントが情報を交換する」となるとサーバーサイドでなければ出来ません。
    次のファイルをアップロードして下さい。
  2. chat.php の全ソースコードです。
    Shift_JIS でタイプしてアップロードして下さい。
    <html>
    <body>
      <h2>ネットでおしゃべり</h2>
    
      <?php
        $post_mode= $_POST['post_mode'];
        $name= $_POST['name'];
        $msg= $_POST['msg'];
    
        //ファイルを入力
        if (!($fp = fopen("message.txt","r")))
        {   die('message.txt read open error');  }
        while(!feof($fp))     $ary[]= fgets($fp);
        fclose($fp);
    
        //Message を追加
        if ($post_mode=="PUT")
        {   $ary[]= $name . ":". $msg . "\r\n";
        }
    
        //10件を超えると削除
        if (count($ary)>10)     array_shift($ary);
    
        //array を表示
        for($i=0; $i<count($ary); $i++)  echo $ary[$i] . "<BR>";
    
        //ファイルに保存
        if (!($fp = fopen("message.txt","w")))
        {   die('message.txt write open error');  }
        for($i=0; $i<count($ary); $i++) fputs($fp, $ary[$i]);
        fclose($fp);
      ?>
    
      <h3>お名前とメッセージをタイプして下さい</h3>
      <form action="chat.php" method="post">
        <input type="text" name="name"
      <?php
        print("value=\"$name\"><br><br>");
      ?>
        <textarea name="msg" rows="2" cols="80"></textarea><br>
        <input type="submit" name="post_mode" value="GET" /><br>
        <input type="submit" name="post_mode" value="PUT" />
      </form>
    
      </body>
    </html>
    
  3. ファイルの入出力は ファイルの入出力 を参照して下さい。
    Form からタイプされたデータを受け取って、"message.txt" に記録されている TEXT を配列に格納します。
    「die」関数は「exit」関数のエイリアスで、スクリプトの実行を終了します。
        $post_mode= $_POST['post_mode'];
        $name= $_POST['name'];
        $msg= $_POST['msg'];
    
        //ファイルを入力
        if (!($fp = fopen("message.txt","r")))
        {   die('message.txt read open error');  }
        while(!feof($fp))     $ary[]= fgets($fp);
        fclose($fp);
    
  4. 受け取ったデータを配列に追加します。
    データが10件を超えると、古いデータを削除します。
    配列のデータを表示します。
        //Message を追加
        if ($post_mode=="PUT")
        {   $ary[]= $name . ":". $msg . "\r\n";
        }
    
        //10件を超えると削除
        if (count($ary)>10)     array_shift($ary);
    
        //array を表示
        for($i=0; $i<count($ary); $i++)  echo $ary[$i] . "<BR>";
    
  5. 配列のデータをファイルに書き込みます。
        //ファイルに保存
        if (!($fp = fopen("message.txt","w")))
        {   die('message.txt write open error');  }
        for($i=0; $i<count($ary); $i++) fputs($fp, $ary[$i]);
        fclose($fp);
      ?>
    
  6. データをタイプ入力する Form です。
    GET ボタンをクリックすると、表示が最新の状態に更新されます。
      <h3>お名前とメッセージをタイプして下さい</h3>
      <form action="chat.php" method="post">
        <input type="text" name="name"
      <?php
        print("value=\"$name\"><br><br>");
      ?>
        <textarea name="msg" rows="2" cols="80"></textarea><br>
        <input type="submit" name="post_mode" value="GET" /><br>
        <input type="submit" name="post_mode" value="PUT" />
      </form>
    
  7. ファイルのアクセス管理を行っていないので、複数のクライアントが同時にアクセスするとメッセージが消失する危険性がありますが、数人でおしゃべりする場合には問題無いでしょう。
    お友達と同時にページに接続して「おしゃべり」を楽しんで下さい。

前田稔の超初心者のプログラム入門
PHP Program