限制用户的功能/操作

时间:2012-09-09 13:29:30

标签: php

您好我的情况是,在特定日期,我的用户可以更新数据,但仅将其更新限制为仅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 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

在@TigOldBitties建议的情况下向表中添加一个count列,并在WHERE子句AND updateCount <= 3的末尾添加

- 您确定if(date('m','d' == '04','01')){是否正确?我认为它应该是if(date('m','d') == '04','01'){

- 甚至if(date('m','d') == '04','01'){也不是正确的,你在这里尝试做什么?

答案 2 :(得分:2)

将'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());
}