限制用户';s的功能/动作


Limit a user's function/action

你好,我的场景是,在特定日期,我的用户可以更新数据,但只能将更新次数限制为3次。这是我迄今为止的代码。

if(date('m','d' == '04','01')){
     $sql="update tbl_enroll fields,fields,fields where student_id='".$_POST['student_id'] . "'";
     $pow = mysql_query($sql) or die (mysql_error());
}

知道如何限制他的更新吗?我的数据库结构中有什么需要更改的吗?如果有任何帮助,我将不胜感激。

在表中添加一个计数列,并在用户每次更新时递增。如果计数为3,则禁止该操作并显示错误消息。

按照@TigOldBitties的建议向表中添加一个计数列,并在WHERE子句AND updateCount <= 3 的末尾添加

--你确定if(date('m','d' == '04','01')){是正确的吗?我认为应该是if(date('m','d') == '04','01'){

--即使是if(date('m','d') == '04','01'){也不可能是对的,你在这里想做什么?

将"counter"添加到tbl_enroll。类似这样的东西:

ALTER tbl_enroll ADD COLUMN counter SMALLINT UNSIGNED NOT NULL;

那么,你的代码应该是这样的:

// check how many times has this user edited:
$sql = 'SELECT counter FROM tbl_enroll WHERE student_id=123';
$pow = mysql_query($sql) or die (mysql_eror());
$pow = mysql_fetch_assoc($pow);
$allowed = true;
if ($pow['counter'] >= 3) $allowed = false;
if (date('m') == '04' && date('d') == '01' && $allowed) { // allow edit only on april 1
    $sql = "UPDATE tbl_enroll SET something='something',other_field='',counter=(counter+1) WHERE student_id=123"; // this is just an example, please focus on "counter=(counter+1)"
    $pow = mysql_query($sql) or die (mysql_error());
}