当前位置: 首页 > 知识库问答 >
问题:

我如何设置用户访问一个页面的最大数量[关闭]

慕皓君
2023-03-14

想要改进此问题?通过编辑此帖子,更新问题,以便可以用事实和引文来回答问题。

我目前正在开发一个带有编辑按钮的应用程序:

我的编辑按钮:

<th title="Edit task" class="edit" style="float: right; $color;">
    <?php
    echo "<a href=edit.php?id=" . $row["id"] . ">
              <i class=material-icons>edit</i>
          </a>";
    ?>      
</th>

我的目标是一次只有一个人可以编辑一篇文章。这可能吗?如果是,我怎么能做到呢?

共有3个答案

班承德
2023-03-14

在我看来,这不完全可能。

但是试着用下面的方法来做。

您可以在数据库中添加两列“open”和“time”

如果有人正在编辑,请将“打开”设置为“真”或“假”。还要将时间戳设置为“时间”列。在进行编辑时,每隔几秒钟替换一次时间戳。

如果其他人打开它,请检查“打开”列,如果它是“true”,计算从“时间”列经过的时间。如果超过特定时间(例如 2 或 3 分钟),则假定其他用户不再编辑,并允许此用户进行编辑。

为了清楚起见,

您需要添加一个ajax调用,该调用在每分钟/秒之后更新时间戳。如果您在编辑页面中。因此,如果有人关闭浏览器,则时间戳不会更新,并且在下一个用户尝试编辑后,如果时间戳早于2/3分钟,则允许编辑该用户。因为我们假设用户关闭了选项卡或浏览器,所以标志不会更新,但时间戳较旧。

这不是完美的解决方案,但你可以试试。

微生毅
2023-03-14

这是我在我的申请中所做的:

当用户按下编辑按钮时,将时间戳记录在数据库中,并将用户重定向到编辑页面。在编辑页面中,设置计时器并将其显示给用户,用户可以编辑记录,直到计时器用完。

例如,根据您的记录,您可以考虑2分钟让用户编辑记录。时间将从01分59秒开始,并达到00分00秒。

对于其他用户,当单击“编辑”按钮时,您应该检查其他用户是否正在编辑该记录,您可以通过从登录数据库计算时间来完成此操作。

如果用户在2分钟内编辑记录并保存,您可以删除编辑日志让其他用户进行编辑。

拓拔骁
2023-03-14

如果您只想禁用按钮以避免并发编辑,那么这是一个可怕的想法,因为用户总是可以通过直接链接打开编辑页面。事实上,您需要实现并发控制。

您可以将记录锁定到并发控制。

例如,您可以使用以下简单算法实现并发控制:

    < li >您添加了将包含锁定到文章的结束时间的参数 < li >在编辑页面上:将此时间与当前时间进行比较,如果锁定时间大于当前时间,则通知用户无法修改文章,否则向用户显示编辑页面 < li >在编辑页面上:如果向用户显示文章的编辑页面,则增加锁定参数的结束时间,例如以5分钟为增量 < li >如果用户完成记录修改并保存,那么您应该重置锁定的结束日期

但是代替这种算法,你可以实现乐观锁定。

乐观锁定为用户提供了同时打开编辑页面,但它禁止以并行方式保存记录。这是避免并行修改记录的麻烦的更好方法

乐观锁定包括接受或拒绝记录,取决于记录版本。

它的工作原理如下:每篇文章都有一个“版本”参数,其中包含记录修改的数量。一个用户打开版本等于1的文章的编辑页面,另一个用户同时打开它。他们都保存同一篇文章。首先,您会收到一个记录修改请求,并将存储记录的版本与更新记录的版本进行比较,如果它们彼此相等,那么您应该接受更改并将更新的记录保存在存储中,并以1为增量增加“版本”参数,否则,您应该拒绝更改。作为此算法的结果,存储的记录的版本等于2。接下来,您将获得第二个请求并再次比较版本,但由于存储记录的版本等于2并且来自第二个请求的更新记录的版本等于1,因此此更改被拒绝。当然,您必须通知用户其更改被拒绝,并让用户能够更新记录的新变体

 类似资料:
  • 问题内容: 我正在编写一个利用多个类的程序。我有一个专门用于确定一组变量的值的类。然后,我希望能够与其他类一起访问那些变量的值。我的代码如下所示: 我使用classA初始化2个变量(var1和var2)。然后,我使用methodA添加它们,将结果保存为var1(我认为这会使var1 = 3和var2 = 2)。我想知道的是,我将如何拥有ClassB,然后能够从ClassA获得var1和var2的值

  • 问题内容: 我是JSF的新手,只写了第一个简单的jsf网络应用程序。 具有.jsf的URL映射到WebContent中的.xhtml文件,但是为什么我可以使用所有jsf标签在Web浏览器中打开.xhtml。如何保护呢? 问题答案: 您可以在阻止所有对的请求时添加安全约束。

  • 有人知道如何改变页面大小(从字母到A4)为(docx)吗? 我找不到任何像XSSFDocument(xlsx)中那样的打印设置。 谢谢你的帮助。

  • 我正在尝试使用单个Service yaml在多个节点上设置对Pods的访问。Pods都有相同的标签(例如),但分布在多个节点上,而不是在单个节点上。 据我所知,我可以设置一个服务,通过节点端口转发对Pod的访问,比如: 其中访问节点上的端口30000会转发到pod上的端口5000。 如果我在多个节点上有pod,有没有一种方法可以让客户端访问一个endpoint,例如服务本身,从而在循环中获得任何p

  • 本文向大家介绍请问海量数据如何去取最大的k个相关面试题,主要包含被问及请问海量数据如何去取最大的k个时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1.直接全部排序(只适用于内存够的情况) 当数据量较小的情况下,内存中可以容纳所有数据。则最简单也是最容易想到的方法是将数据全部排序,然后取排序后的数据中的前K个。 这种方法对数据量比较敏感,当数据量较大的情况下,内存不能完全容纳全部数据,这种

  • 我有一个用户控件,可以上传图像并向用户显示。在父页面上传图像后,我想将图像URL保存到数据库,但我不能。这是我使用的代码,但图像为空。