Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 限制Joomla中每个用户Id 24小时内的提交次数_Php_Mysql_Forms_Date_Joomla - Fatal编程技术网

Php 限制Joomla中每个用户Id 24小时内的提交次数

Php 限制Joomla中每个用户Id 24小时内的提交次数,php,mysql,forms,date,joomla,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('CO

我们在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>';
  }
但是,我们必须对其进行修改,以便:->最大提交条款保留24小时- 从第一次提交开始,用户最多可以在24小时内提交5次,并且在24小时后自动关闭限制


任何建议或帮助

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

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

例如,在表中添加一个名为createdDate的字段作为DATETIME

然后确保更新插入以传递日期,以便在保存提交时将当前时间保存到插入中

然后,您可以使用如下内容:

$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)'));
获取该用户ID在过去24小时内的所有提交

计算结果:

$db->setQuery($query);
 $counter = $db->loadResult();
您可能需要使用count$计数器来获取总数。 我不确定loadResult函数如何返回数据