我的网页上有两个按钮(接受并拒绝)。我想限制接受按钮的点击次数。我希望在24小时内点击“接受”按钮的次数为20次。 24小时结束后,用户可再次单击该按钮20次。我正在使用MySQL数据库和PHP。
答案 0 :(得分:6)
基本上我对PHP一无所知,但我可以建议实现结果的方式。
您需要一张包含以下特定列的表格。
根据条件创建执行包括插入,更新等操作的存储过程。
CREATE PROCEDURE sp_ManageButtonClickByUserId
@UserId INT,
@IsClick BIT = 0
AS BEGIN
-- Lets consider your table name is ManageButtonCLick with columns including
-- 1.UserId int
-- 2.FirstClickDateTime DateTime
-- 3.TotalClicks int
IF ISNULL(@IsClick,0) <> 0 -- Determine IsClick is true when pass from code
BEGIN
Declare @TotalClick AS INT
SET @TotalClick = (SELECT TotalClick FROM ManageButtonCLick WHERE UserID = @UserId);
SET @TotalClick = ISNULL(@TotalClick, 0) + 1;
If EXISTS(SELECT 1 FROM ManageButtonCLick WHERE UserID = @UserId) -- If user exists than update record
BEGIN
/* Determine the 24 is completed or not for specific user */
Declare @IsHoursCompleted AS BIT = 0; -- Indecates false
Declare @TotalHoursCompleted AS INT = 0;
SET @TotalHoursCompleted = (SELECT DATEDIFF(HOUR, FirstClickDateTime, GETDATE()) FROM ManageButtonCLick WHERE UserID = @UserId);
SET @IsHoursCompleted = (SELECT CASE WHEN ISNULL(@TotalHoursCompleted,0) >= 24 THEN 1 ELSE 0 END);
IF (ISNULL(@IsHoursCompleted,0) <> 0)
BEGIN
UPDATE ManageButtonCLick
SET FirstClickDateTime = GETDATE(), TotalClicks = 1
WHERE UserID = @UserId
END
ELSE
BEGIN
UPDATE ManageButtonCLick
SET TotalClicks = @TotalClick
WHERE UserID = @UserId
END
END
ELSE -- if user not exists than insert that user detail for button click
BEGIN
INSERT INTO ManageButtonCLick (UserId, FirstClickDateTime, TotalClicks)
VALUES (@UserId, GETDATE(), @TotalClick)
END
END
END
现在这一次来管理来自背后代码的点击次数
当用户加载此页面时(此时有“接受”按钮,您需要确定该用户在24小时内完成了总点击次数。对于此任务,您必须创建一个返回true或false的函数。)
如果为特定用户启用按钮,则执行以下操作...
当用户点击&#34;接受&#34;按钮,您需要从代码中调用该过程以及所需的参数。
此用户已禁用其他按钮。
答案 1 :(得分:0)
onclick EventListener
添加到button
。检查以下代码。 (点击20次)
var times=0;
function checkTime(btn){
if(times<20){
++times;
}
else{
btn.disabled=true;
console.log("come back tomorrow");
setTimeout(function(){ times=0; }, 86400000);
}
}
&#13;
<button onclick="checkTime(this);">Accept</button>
&#13;
答案 2 :(得分:0)
你不能像@SagarV那样做,因为用户可以重新加载页面并继续垃圾邮件按钮。你需要在sessionStorage或cookie中设置一个标志或某个东西,以防止用户在24小时内点击按钮。