我还是个新手。话虽这么说,我的网站有一个消息传递系统,允许用户删除他们发送的消息。人们发现,如果我从“已发送”邮箱中删除我的消息,它也会从收件人收件箱中删除该消息。我有两种方法可以从您发送的邮件中删除消息,“删除所有消息”和一条一条。
这是我的全部删除代码:
function deleteAll() {
var answer = confirm('Are you sure you want to delete all of your messages?');
if(answer){
return true;
}else{
return false;
}
}
if(isset($_POST['subEraseAll'])){
$query = "UPDATE `Messages` SET `status` = 'dead' WHERE `sentFrom` = '".$auth->id."'";
mysql_query($query,$connection) or die(mysql_error());
<div class="EraseAll">
<form name="EraseAll" action="SentMail.php" method="post" onsubmit="return deleteAll();">
<input type="submit" name="subEraseAll" value="Erase All Messages" />
</form>
</div>
下面是通过 deleteConfirmPage 一条一条删除消息的代码:
$message = $_GET['id'];
$query = "SELECT * FROM `Messages` WHERE `id` = '" . $message . "'";
$request = mysql_query($query,$connection);
$result = mysql_fetch_array($request);
$toUser = $result['sentTo'];
$fromUser = $result['sentFrom'];
if($auth->id !=$fromUser) {
header("Location: index.php");
exit;
}
$query = "UPDATE `Messages` SET `status` = 'dead' WHERE `id` = '".$message."' LIMIT 1";
$request = mysql_query($query,$connection);
那么,如何阻止我的查询从收件人收件箱中删除我的已发件箱中的已发送邮件?
最佳答案
为此,您可能需要更改一些表的结构,或更改“状态”列的使用方式。
这是一个建议更改表结构的潜在解决方案,但如果没有更多信息,我无法确定它是否有效(甚至相关):
现在您的消息表只有一个'Status'列,它真正需要的是一个'Status Sender'列和一个'Status Receiver '列。
当发件人删除消息时将“Status Sender”值设置为“dead”,当接收者删除消息时将“Status Receiver”设置为“dead”强>
这意味着当您显示用户收件箱中的消息时,您需要查询'Status Reciever' = 'alive',并且当您显示用户发送文件夹中的邮件,您需要查询'Status Sender' = 'alive'。
注意:这种设计不适用于单个用户向多个收件人发送消息的情况。
关于php - 已发送邮件删除功能中的故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2105470/