我的网站上有一个消息系统,允许用户相互发送和接收消息。
我现在正在处理的是,如果用户向另一个用户发送了一条消息并且用户阅读了此消息,他们就可以回复该消息。
目前我的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>";
}
}
?>
答案 0 :(得分:1)
在您的HTML代码中,图片不会提交表单,因此单击它时不会发生任何事情。您需要添加onclick
或使用submit
按钮(您可以使用CSS在提交按钮中显示图片):
onclick示例:
<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 ......)。您应该在Prepared Statements上查找一些教程并将其应用到您的代码中。