我有一个小型消息传递系统,其中的会话有问题。问题在于:我有 inbox.php 和 view_inbox.php,其中所有消息都将列在 inbox.php 上,当用户单击其中一条消息时,它将在第二页上显示消息正文。
另外我在 view_inbox.php 上有一个回复按钮来回复发件人。如果 user1 向 user2 发送消息,即使相互回复也可以正常工作,但是当 user3 发送消息并且我尝试回复 user3 时,它会发送给 user2 而不是 user3。
正如您在下面看到的,我正在使用会话来识别要回复的用户,问题是它正在插入旧会话(如果我回复了 user2 并再次尝试回复 user3 它不起作用;不起作用)。
我可以使用$_GET
变量来避免这个问题,但我不想在 url 中显示发件人的姓名。有任何想法吗?
收件箱.php
$stmt = $mydb->prepare("SELECT * FROM messages where to_user = ? and deleted = '' order by id desc");
$stmt->bind_param('s', $username->username);
$stmt->execute();
<?php
while ($row = $stmt->fetch_assoc()) {
$_SESSION['sender'] = $row['from_user'];
echo"<a href='view_inbox?messageid=".$row['id']."'>".$row['from_user']."</a>";
?>
view_inbox.php这只是导致问题的回复部分。
$to_user = $_SESSION['sender'];
if (isset($_POST['replyto']))
$reply = $_POST['reply']; {
if(!empty($reply)){
$date = date('m-d-Y h:i:s');
$insert = $mydb->prepare("insert into `messages`(`to_user`, `from_user`, `message`, `date`) values(?,?,?,?)");
echo $mydb->error;
$insert->bind_param('ssss', $to_user, $username->username, $reply, $date);
$insert->execute();
}