我使用 phprunner 开发了一个数据捕获表单,数据在 mysql 数据库上更新。
由于输入时的拼写错误,我只允许用户编辑自己的数据,并进一步将其限制为一个字段(自由文本和容易出错的字段)。
是否可以在给定时间段(例如 1 天)后锁定记录。
这里的目标是为用户“编辑”能力设置一种到期时间,因此从存储记录中提取的历史报告总是相同的。
如果是这样,如何实现?
谢谢
简单的方法是首先检查记录是否可以编辑。例如,当您构建编辑表单时,检查该记录是多久之前创建的。如果大于 1 天,则输出“抱歉,已禁用编辑”而不是表单。
如果您有相对聪明的用户可以伪造表单并提交数据,那么您还可以在 sqlupdate
级别进行过滤以禁止更改:
UPDATE yourtable
SET ...
WHERE (id = $id) AND ((record_created + interval 1 day) > now())
您可以在表中设置一个日期输入列(使用 NOW() 表示当前时间)并在用户尝试更新他们的帖子时检查它。使用date_add() 或 date_sub()计算时间差。
创建一个日期创建列,然后检查该日期与今天日期之间的日期差异。如果它大于一,那么您可以使用 php 或其他方式锁定它:
if ($timeDiff greater than a day){
disable edit button
else
enable edit button
}
这只会阻止数据库被更新,但不会隐藏用户“更新/提交”按钮
UPDATE table
SET ...
where last_update < date_sub(now(), interval 1 day)
And id = $id
要向用户隐藏按钮,您可以(在前端)
SELECT
id,
IF(last_update < date_sub(now(), interval 1 day), 1, 0) as show_update_button
.....