Php 以月为单位限制用户操作
我的用户上传照片和mysql中记录的所有上传的日期信息。我想在几个月内限制上传。用户可以在一个月内上传3张图片。最好的方法是什么 干杯一个可能的解决方案: 有一个用户id和月份的表格 每次用户上传照片时,增加该用户当月的数量 然后在上传照片的页面上检查当月的值是否小于3。如果它是允许上传,如果它等于3,则显示“您已使用完本月的上传”消息 如果您还包括一个与每个用户关联的“最大上载”字段,则在必要时,您可以允许某些用户更多上载,而允许其他用户更少上载,或者在带宽允许的情况下增加限制。未测试:Php 以月为单位限制用户操作,php,mysql,Php,Mysql,我的用户上传照片和mysql中记录的所有上传的日期信息。我想在几个月内限制上传。用户可以在一个月内上传3张图片。最好的方法是什么 干杯一个可能的解决方案: 有一个用户id和月份的表格 每次用户上传照片时,增加该用户当月的数量 然后在上传照片的页面上检查当月的值是否小于3。如果它是允许上传,如果它等于3,则显示“您已使用完本月的上传”消息 如果您还包括一个与每个用户关联的“最大上载”字段,则在必要时,您可以允许某些用户更多上载,而允许其他用户更少上载,或者在带宽允许的情况下增加限制。未测试: SE
SELECT COUNT(*) FROM photos WHERE user="bob" AND createdAt > DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
该查询应返回名为bob的用户在上个月创建的photos
表中的行数(根据createdAt
字段)。将其与3
进行比较,以了解是否允许他们上传内容。您所说的“月限”是什么意思?你的意思是“过去30天的限额”,还是“每个月的第一天重新设置限额”
对于第一种情况:只需选择当前用户在上个月创建的图片数量。如果此数字>=3,则拒绝用户上载的权利
SELECT COUNT(*) FROM <pictures_table>
WHERE <upload_date_field> >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
AND <user_field> = <current_user>
从中选择计数(*)
其中>=日期(CURDATE(),间隔1个月)
和=
我应该提到,您可以在应用程序的不同层上实现此逻辑,但这取决于您。使用:
SELECT YEAR(t.ur_date_field) AS yr,
MONTH(t.ur_date_field) AS month_number,
COUNT(*) AS num_photos
FROM UR_TABLE t
GROUP BY YEAR(t.ur_date_field), MONTH(t.ur_date_field)
ORDER BY yr, month_number
…获得:
yr | month_number | num_photos
--------------------------------
2010 | 1 | 2
2010 | 2 | 1
如果一个月内没有任何照片,它将不会显示在结果集中
从那里,您可以特别验证月份。但这将限制它在当前日期的1个月以内,我需要在2月、4月、6月等月份执行此操作…我的意思是“每个月的第一个月重置限制”