Php 限制Joomla中每个用户Id 24小时内的提交次数
我们在joomla使用RSform pro构建了一个表单。 有一个脚本可以将注册成员提交的总提交数限制为5次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
// 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函数如何返回数据