0

我的网站上有一个消息传递系统,允许用户相互发送和接收消息。

我现在正在研究的一点是,如果用户向另一个用户发送消息并且用户阅读了此消息,他们可以回复它。

目前我的 html 表单设置为在文本区域中回显消息内容,然后用户可以从文本区域中删除此内容并重新键入他们想要的内容。

然后,一旦他们点击提交,那么应该转到 message_reply.php,这应该在原始消息 id 存在的地方插入新的消息内容,并将其发送回它来自的用户,这意味着再次更新 id 所在的消息内容, user_to_id 和 user_from_id 匹配,它应该插入带有 :reply 后缀的原始主题,并更新“read_message”并将枚举值从 1 设置回 0(如未读)。

我正在为此苦苦挣扎,因为我是 php 和 mysql 的新手。请有人告诉我我需要做什么。

我的 mysql 表称为“ptb_messages”,其布局如下:

id  |  from_user_id(the person who sent msg) | to_user_id (recipient) | content | date_sent | read_message | deleted_to | deleted_from |

这是我的html表单:

<form action="message_reply.php?to=<?php echo "$profile_id"; ?>" method="post">
  <textarea name="textarea" id="textarea">
    <?php echo  "{$message['content']}"; ?>
  </textarea>
  <?php
    }
  ?>
  <input type="image" src="assets/img/icons/email_send.png"
         width="50" height="34" name="send_button" id="send_button">
</form>

mysql 函数 (message_reply.php)

<?php 
//We check if the form has been sent
if(isset($_POST['textarea'])) {
  $textarea = $_POST['textarea'];
  //We remove slashes depending on the configuration
  if(get_magic_quotes_gpc()) {
    $textarea = stripslashes($textarea);
    }
  //We check if all the fields are filled
  if($_POST['textarea']!='') {
    $sql = "UPDATE ptb_messages SET (id, from_user_id, to_user_id, textarea) VALUES (NULL, '".$_SESSION['user_id']."', '".$message['from_user_id']."', '".$textarea."');";
    mysql_query($sql, $connection);

    echo "<div class=\"infobox1\">The message has successfully been sent.</div>";
    }
  }

?>
4

1 回答 1

1

在您的 HTML 代码中,图像不会提交表单,因此单击它时不会发生任何事情。您需要添加onclick或使用submit按钮(您可以使用 CSS 在提交按钮中显示图像):

点击示例:

<form id="need_an_id_here"
   action="message_reply.php?to=<?php echo "$profile_id"; ?>"
   method="post">
   ... your textarea
  <input type="image" src="assets/img/icons/email_send.png"
     width="50" height="34" name="send_button" id="send_button"
     onclick="document.getElementById('need_an_id_here').submit();">
</form>

此外,虽然这不是您的直接问题,但您的代码容易出现安全问题(SQL 注入、XSS ......)。您应该查找一些有关准备好的语句的教程并将其应用到您的代码中。

于 2013-02-11T02:57:04.873 回答