我在谷歌上搜索如何限制用户每次提交。我有一个表单,用户不断提交他们的信息。它工作正常,但我怎么能限制用户每隔一天提交一次表单,例如,如果用户今天提交,他试图在几个小时后提交表单,他不能,直到24小时通过。
// attempt insert query execution
$sql = "INSERT INTO request (fname, lname, amount, cedula,user_id, category, points,comments ) VALUES ('$_POST[fname]', '$_POST[lname]', '$_POST[amount]','$_POST[cedula]','$user_id' ,'$user_cat','$points','$_POST[comments]' )";
if(mysqli_query($link, $sql )){
header("Location: http://www.loan2center.com/users/submitthankyou.php");
echo "Records added successfully.";
}
else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
如果我声明$DATE = date(“Y/m/d”),这就是我想写的帖子;然后修改if(mysqli_query($link,$sql && $date〈= 24000)){///这样它就可以限制它,但是我不知道它是否有效或者哪种方法是最好的
6条答案
按热度按时间kqqjbcuj1#
这取决于您在后端的实现,但逻辑上您希望允许用户提交表单,然后在服务器上检查当前时间与他们上次输入的时间戳的比较,如果差值小于24小时,则返回一个400错误请求并在客户端处理。
p8h8hvxi2#
在加载请求的表单之前,应检查用户的请求是否早于24小时。此外,还应在数据库的requests表中添加DATETIME类型的列(在下面的代码中名为latest_request),以表示最新请求的时间和日期。
在您的php中请求表单:
在您的php中为提交请求表格后:
在这里你可以找到php支持的时区列表:http://php.net/manual/en/timezones.php.
我希望我对您的问题有所帮助。如果出现问题,或者您需要更多帮助,请告诉我。其他有用链接:
dfuffjeb3#
最简单的方法是在存储特定用户的表单数据时将日期时间存储在表中,因此在插入新记录之前,您需要检查过去24小时内是否有相同用户ID的条目,然后优雅地向他/她显示消息,否则继续正常提交表单。
0mkxixxg4#
Herre是完整的代码,对我来说很好用:
错误是否仍然出现?请告诉我!
xbp102n05#
背景:我制作了一个隐藏表单,以便在特定时间自动存储用户数据,但是,由于我输入它的时间,在一分钟内每秒钟为每个用户提交一次表单,因此导致每个用户每分钟有60个条目。
为了解决这个问题,我使用了@Thanasis1101提供的部分代码。我使用了发布记录的常规方法,但在运行
INSERT INTO table (columns) VALUES (record_values)
脚本之前,我添加了以下内容:这使得表单在最后一次提交后的12个小时内根本无法提交。但是,出于某种原因,我必须在
if ($result['date'] !=''){
行中添加以下内容:用户第一次提交数据时,它添加了记录,但抛出了一个错误(PHP警告:尝试访问null类型值的数组偏移量),因为我的数据库设置为自动添加日期戳,而不是从表单中获取。如果您通过表单添加它,它应该不会给予您错误。rfbsl7qr6#
我能够解决我的请求。基本上我需要限制访问请求表的期间。示例表单是今天提交的,用户将无法访问它,直到3天后,也当一个新用户创建提供访问请求表。这是我的代码
这样做是因为对于没有提交任何表单的新用户,last_request日期是“0”,并且代码被设置为最后日期大于3才具有访问权。
日期差异我使用天和小时作为1个示例224= 3天正好是2天24小时,这就是为什么$access=224。
希望它能帮助别人在未来如果是这样的话,请竖起大拇指将不胜感激