我正在聊天室。我的代码可以工作,但是每个人都可以看到对方聊天的内容。我想限制这个只能让两个人聊天才能看到。
这是我的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'";
但要编写此查询,我想检查以前的邮件发件人姓名,我无法获取。 有任何帮助,写一个简单的聊天,只向两个参与的人显示消息。我努力但是没有成功
答案 0 :(得分:0)
如果你为消息添加了ID,它将使整个事情变得更容易。创建一个名为ID的列,并使用它来标识消息。
$query="SELECT * FROM chat1 WHERE sender='$sender' AND receiver='$receiver'"
此代码将获取两个用户发布的所有消息。但如果你想知道什么时候发布的消息,那么你将不得不这样做&gt;
$query="SELECT * FROM chat1 WHERE sender='$sender' AND receiver='$receiver' ORDER BY id"
这将按消息获取消息并按ID排序。 ID将在表中设置为auto_incrediment。如果你只想让他们两个看到这个消息,你就必须做这样的事情:
if($_SESSION['current_user']=="$sender" OR $_SESSION['current_user']=="receiver")
{
//If the visitor is the sender or receriver
}
答案 1 :(得分:0)
您可以持久保存/添加另一列,时间戳,并根据该列对消息进行排序。这将为您的应用程序提供一个功能,即发送消息的时间,也是:)
现在您必须触发两个查询,以收集所有消息。
$ query =&#34; SELECT * FROM chat1 WHERE sender =&#39; $ sender&#39; AND receiver =&#39; $ receiver&#39;&#34 ;; $ query =&#34; SELECT * FROM chat1 WHERE sender =&#39; $ receiver&#39; AND receiver =&#39; $ sender&#39;&#34;;
如果您需要进一步澄清,请对此发表评论。