限制Joomla中每个用户ID的提交数量为24小时

时间:2014-10-12 04:43:07

标签: php mysql forms date joomla

我们在joomla中使用RSform pro构建了一个表单。 有一个脚本可以将注册会员提交的总数限制为5份。

 // Define the maximum number of submissions.
 $max = 5;
 $user = JFactory::getUser();
 $db   = JFactory::getDbo();
 $query   = $db->getQuery(true);

 // Setup the query.
$query->select('COUNT('.$db->qn('UserId').')')
->from($db->qn('#__rsform_submissions'))
->where($db->qn('FormId').'='.$db->q($formId))
->where($db->qn('UserId').'='.$db->q($user->get('id')));

$db->setQuery($query);
 $counter = $db->loadResult();

if ($counter >= $max){
$formLayout = '<p style="color:red;">Rejected</p>';
  }

但是 - 我们必须对其进行修改,以便: - &gt;最大提交条款保留24小时 - 用户可以在首次提交完成后的24小时内完成最多5次提交 - 以及24小时后自动关闭的限制

任何建议或帮助!!

2 个答案:

答案 0 :(得分:0)

在数据库中创建一个字段,提交时间为(int),使用php time()函数插入时间,并使用current_time-last_post_time比较每次提交的时间。

答案 1 :(得分:0)

您需要保存保存到数据库的每个提交的创建日期。

因此,例如,在createdDate <{1}}中将字段添加到DATETIME

然后确保更新INSERT以传递DATE(),以便在保存提交时将当前时间保存到其中。

然后你可以使用这样的东西:

$query->select('COUNT('.$db->qn('UserId').')')
->from($db->qn('#__rsform_submissions'))
->where($db->qn('FormId').'='.$db->q($formId))
->where($db->qn('UserId').'='.$db->q($user->get('id')));
->where($db->qn('createDate').'=> DATE_SUB(NOW(), INTERVAL 24 HOUR)'));

获取该UserId过去24小时内的所有提交

你计算结果:

$db->setQuery($query);
 $counter = $db->loadResult();

您可能需要使用count($counter)来获取总数。 我不确定你的loadResult()函数如何返回数据。