在开发内容管理系统时,防止用户发布重复文档是一个常见的需求。本文将详细介绍如何通过修改member/inc/archives_check.php文件中的代码,来实现这一功能,并进一步优化以允许不同会员发布相同的文章,但限制同一会员发布重复文章。

 

首先,在member/inc/archives_check.php文件中,我们需要添加一段逻辑用于检测文档标题是否重复。以下是原始的代码实现:


{
    $row = $dsql->GetOne("Select * From `mydiy_archives` where title like '$title' ");
    if(is_array($row)) 
    { 
        ShowMsg("对不起,请不要发布重复文档!","-1","0",5000); 
        exit(); 
    } 
}
    

 

上述代码的功能是查询数据库中是否存在与当前标题相同的记录。如果存在,则弹出提示信息“对不起,请不要发布重复文档!”,并终止程序运行。

 

接下来,我们对这段代码进行优化,使其支持不同会员发布相同的文章,但禁止同一会员发布重复的文章。具体做法是修改 SQL 查询语句,增加条件限制,只检查当前会员(mid)是否已经发布了相同标题的文章。

 

修改后的代码如下:


$row = $dsql->GetOne("Select * From `mydiy_archives` where title like '$title' and mid = '".$cfg_ml->M_ID."'");
    

 

在这里,我们通过添加条件 and mid = '".$cfg_ml->M_ID."' 来确保只有当标题和会员 ID 同时匹配时,才会被认为是一个重复的文档。

 

完成以上修改后,系统将能够满足以下两个需求:

  • 不同会员可以发布相同标题的文章。
  • 同一会员不能发布相同标题的文章。

 

最后,为了确保代码的稳定性和安全性,请务必在实际应用中对输入参数(如 $title$cfg_ml->M_ID)进行严格的验证和转义处理,避免 SQL 注入等安全问题。

 

总结来说,通过调整 SQL 查询语句,我们可以灵活地控制文档发布的规则,既满足业务需求,又提升了用户体验。希望这篇文章能帮助您更好地理解和实现相关内容管理功能。