0

私はチャット ルームを作成しています。私のコードは機能しますが、誰もがお互いにチャットした内容を見ることができます。これを、チャットしている 2 人だけが見ることができるように制限したいと考えています。

これは私のchat.phpです

<?php
include_once("chat.funct.php");

if(isset($_POST['send'])){
    if(send_msg($_POST['sender'],$_POST['message'])){
        echo "message sent..."; 
        }
    else{
        echo ("message sending failed");
        }

    }
?>
<div id="messages">
<?php
$messages = get_msg();
    foreach($messages as $value) {
        echo '<strong>'.$value['sender'].' Sent</strong><br />';
        echo $value['message'].'<br /><br />';
    }
?>

<form method="post" >
<label>Enter Name:<input type="text" name="sender"/></label>
<label>Enter Message:<textarea name="message" rows="8" cols="70"></textarea></label>
<input type="submit" name="send" value="Send Message">
</form>
</div>

これはchat.funct.phpです

<?php
$connect=mysql_connect('localhost','root');
$a=mysql_select_db('cs2');


function get_msg(){
    $query="SELECT * FROM chat1";
    $run=mysql_query($query);
    $messages=array();
    while($message=mysql_fetch_assoc($run)){

        $messages[]=array('sender'=>$message['sender'],'message'=>$message['message']);
        }
    return $messages;
    }

function send_msg($sender,$message){


    if(!empty($sender)&&!empty($message)){
        $sender=mysql_real_escape_string($sender);
        $message=mysql_real_escape_string($message);
        $query="INSERT INTO  chat1 (sender,message) VALUES('$sender','$message')";
        $run=mysql_query($query);
        if($run){
            return true;
            }
        else{
            return false;
            }
    }
    else{

        return false;
    }
}

//レベル 2 はサイトのユーザーで、レベル 3 は管理者です。

私のchat1テーブルには、送信者、受信者、メッセージの3つの列があります。私がやろうとしているのは、テーブルでsender==receiver.

$query="SELECT * FROM chat1 WHERE sender='$sender' AND receiver='$receiver'";

しかし、このクエリを書くために、取得できない前のメッセージ送信者の名前を確認したいと思います。関係者 2 人だけにメッセージを表示する簡単なチャットを作成するのを手伝ってください。

4

2 に答える 2

0

メッセージに ID を追加すると、全体が簡単になります。ID という列を作成し、それを使用してメッセージを識別します。

  $query="SELECT * FROM chat1 WHERE sender='$sender' AND receiver='$receiver'"

このコードは、2 人のユーザーが投稿したすべてのメッセージを取得します。しかし、どのメッセージがいつ投稿されたかを知りたい場合は、これを行う必要があります>

  $query="SELECT * FROM chat1 WHERE sender='$sender' AND receiver='$receiver' ORDER BY id"

これはメッセージごとにメッセージを取得し、ID で並べ替えます。ID はテーブルの auto_incrediment に設定されます。2 人だけにメッセージを表示したい場合は、次のようにする必要があります。

  if($_SESSION['current_user']=="$sender" OR $_SESSION['current_user']=="receiver")
  {
  //If the visitor is the sender or receriver
  }
于 2013-07-17T19:24:11.213 に答える
0

別の列であるタイムスタンプを永続化/追加し、それに基づいてメッセージを並べ替えることができます。これにより、アプリにもう1つの機能、つまりメッセージが送信された時間も提供されます:)

ここで、すべてのメッセージを収集するために、2 つのクエリを起動する必要があります。

$query="SELECT * FROM chat1 WHERE sender='$sender' AND receiver='$receiver'"; $query="SELECT * FROM chat1 WHERE sender='$receiver' AND receiver='$sender'";

さらに説明が必要な場合は、これについてコメントしてください。

于 2013-07-17T19:24:53.850 に答える