Php 无法从发送方和接收方的数据库服务器打印聊天室消息数据
我的数据库中有一个名为Php 无法从发送方和接收方的数据库服务器打印聊天室消息数据,php,mysqli,Php,Mysqli,我的数据库中有一个名为chat\u message的表, 我在聊天信息列中存储发送者id为来自用户id,接收者id为至用户id,以及聊天信息 在这里,我使用此代码获取所有的聊天信息 <?php session_start(); require_once('include/dbcon.php'); $session_to_user_id = $_SESSION['session_to_user_id']; $session_id = $_SESSION['id']; // fetchin
chat\u message
的表,
我在聊天信息
列中存储发送者id为来自用户id
,接收者id为至用户id
,以及聊天信息
在这里,我使用此代码获取所有的聊天信息
<?php
session_start();
require_once('include/dbcon.php');
$session_to_user_id = $_SESSION['session_to_user_id'];
$session_id = $_SESSION['id'];
// fetching chat message of sender
$query = "SELECT * FROM `chat_message` WHERE `from_user_id`='$session_id' AND `to_user_id` = '$session_to_user_id' order by `chat_message_id` asc ";
// fetching chat message of receiver
$query1 ="SELECT * FROM `chat_message` WHERE `from_user_id`='$session_to_user_id' AND `to_user_id` = '$session_id' order by `chat_message_id` asc ";
$run = mysqli_query ($con,$query);
$run1 = mysqli_query($con,$query1);
while($data = mysqli_fetch_assoc($run) AND $data1 = mysqli_fetch_assoc($run1)){
$chat_message = $data['chat_message'];
$chat_message1 = $data1['chat_message'];
?>
<p>
<div class="chat">
<div class="bubble you black-text">
<?php
echo $chat_message;
?>
</div>
<div class="bubble me black-text">
<?php
echo $chat_message1;
?>
</div>
</div>
</p>
<?php
}
?>
代码正在运行,但是
当一个人向另一个人发送消息时,该消息是
显示到聊天框中
但是,当他再次向第二个用户发送消息时,该消息是无效的
不显示
但当第一个用户和第二个用户在队列中发送单个消息时
剧本写得很好
但是当用户发送多条消息时,问题就出现了
在这里,我只想在右侧打印发件人的聊天室信息,在左侧打印收件人信息
最后,我使用divisionchat
在右侧打印发送者的chat\u消息
,在左侧打印接收者消息。
<?php
session_start();
require_once('include/dbcon.php');
$session_to_user_id = $_SESSION['session_to_user_id'];
$session_id = $_SESSION['id'];
// fetching chat message of sender and receiver both.
$query = "SELECT * FROM `chat_message` WHERE (`from_user_id`='$session_id' AND `to_user_id` = '$session_to_user_id') || (`from_user_id`='$session_to_user_id' AND `to_user_id` = '$session_id') order by `chat_message_id` asc ";
$run = mysqli_query($con,$query);
while($data = mysqli_fetch_assoc($run)){
$chat_message = $data['chat_message'];
$from_user_id = $data['from_user_id'];
$to_user_id = $data['to_user_id'];
?>
<p>
<div class="chat">
<?php if($from_user_id == $session_id){ ?>
<div class="bubble you black-text">
<?php
echo $chat_message;
?>
</div>
<?php } ?>
<?php if($from_user_id !== $session_id){ ?>
<div class="bubble me black-text">
<?php
echo $chat_message;
?>
</div>
<?php } ?>
</div>
</p>
<?php
}
?>
您的代码易受SQL注入攻击。您应该使用准备好的语句。@Dharman如果输入是通过会话变量进行的,它怎么会有漏洞?我没有看到任何GET或POST变量连接字符串。在接受GET或POST数据时,但在将变量数据放入SQL查询时,代码不易受攻击。在本例中,您有来自会话的变量,而不是像您应该的那样绑定它们,而是直接将它们放入SQL中,使代码易受攻击。@user1888089您从何处得到这样的想法?注入也可以在代码内部进行,而不需要任何外部交互。见以下帖子: