Ich habe zwei Schaltflächen auf meiner Webseite (Accept And Reject). Ich möchte die Anzahl der Klicks auf die Schaltfläche "Akzeptieren" einschränken. Ich möchte, wie oft die Schaltfläche "Akzeptieren" innerhalb von 24 Stunden 20 mal angeklickt werden kann. Nach 24 Stunden kann der Benutzer den Knopf 20 Mal erneut drücken. Ich benutze eine MySQL-Datenbank und PHP.Begrenzung der Anzahl der Klicks auf eine Schaltfläche
Antwort
Grundsätzlich habe ich keine Ahnung von PHP, aber ich kann Ihnen vorschlagen, wie Sie Ihr Ergebnis erreichen könnten.
Sie benötigen eine Tabelle mit bestimmten Spalten wie unten angegeben.
- UserId int PK
- FirstClickDateTime Datetime
- TOTAL int
ein Geschäft Prozedur erstellen, die die Operationen einschließlich Einfügen, Aktualisieren nach Zustand durchführen, wie folgend.
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
Nun ist diese Zeit hinter
Wenn Benutzerlast auf dieser Seite (die Schaltfläche Übernehmen zu diesem Zeitpunkt Sie, dass die Benutzer bestimmen müssen hat Klicks von Code zu verwalten hat die Gesamtzahl der Klicks innerhalb von 24 Stunde abgeschlossen Für diese Aufgabe müssen Sie eine Funktion erstellen, die wahr oder falsch zurückgibt).
Wenn Taste ist für bestimmte Benutzer ermöglichen, als unter Operation durchführen ...
Wenn Benutzer klicken Sie auf „Übernehmen“ klicken, müssen Sie den Vorgang aus dem Code aufrufen zusammen mit den erforderlichen Parametern.
Sonst Schaltfläche ist für diesen Benutzer deaktiviert.
- Fügen Sie eine
onclick EventListener
zurbutton
hinzu. - Legen Sie eine globale Variable als Zähler fest.
- Erhöhen Sie für jeden Klick die Anzahl.
- Während es 20 erreicht, fügen Sie einen setTimeout hinzu, um den Zähler auf 0 mit der Zeitspanne 86400000 (24 Stunden in Millisekunden) zurückzusetzen.
Überprüfen Sie den folgenden Code. (Klicken Sie auf das 20-fache)
var times=0;
function checkTime(btn){
if(times<20){
++times;
}
else{
btn.disabled=true;
console.log("come back tomorrow");
setTimeout(function(){ times=0; }, 86400000);
}
}
<button onclick="checkTime(this);">Accept</button>
Sie können nicht wie @SagarV tun will, denn dann kann ein Benutzer einfach die Seite neu zu laden und Weiter Spamming die Taste. Sie müssen ein Flag oder etwas in der sessionStorage oder einem Cookie setzen, um zu verhindern, dass der Benutzer innerhalb von 24 Stunden auf die Schaltfläche klickt.
Können Sie mir eine Art Code zur Verfügung stellen? Es wäre wirklich hilfreich. –
Ich bin nicht sicher, wie Ihre Anwendung funktioniert, aber verwenden Sie den Zähler wie oben vorgeschlagen, und wenn das Limit erreicht ist, dann setzen Sie ein Cookie für diesen Benutzer wie document.cookie = "username = Bill Bull; expires = Sa, 25 March 2017 12 : 00: 00 UTC; Pfad =/"; – FrankCamara
oder verwenden Sie die SessionStorage für das Fensterobjekt, Problem mit diesem ist, dass wenn ein Benutzer eine neue Registerkarte öffnet, dann ist es eine neue Sitzung. – FrankCamara
- 1. Notwendigkeit der Begrenzung Schaltfläche Klicks
- 2. Anzahl der Klicks auf die Schaltfläche
- 3. Begrenzung der Anzahl der Objekte in NSArrayController
- 4. Begrenzung der Anzahl der Datensätze von mysqldump?
- 5. log4j2 - Begrenzung der Anzahl der Protokolldateien
- 6. WP7 Begrenzung der Anzahl der MediaElements
- 7. xlwt Begrenzung der Anzahl der Zeilen
- 8. Lesen der rechten Mausklicks Anzahl der Klicks
- 9. Regulärer Ausdruck zur Begrenzung der Anzahl der Zeichen auf 10
- 10. So verfolgen Sie die Anzahl der Spam-Klicks auf eine Schaltfläche in WPF
- 11. Laravel Eloquent Abfrage - Begrenzung auf eine Anzahl()
- 12. Begrenzung der CPU-Anzahl für einen Benutzer
- 13. über die Anzahl der Datei-Deskriptoren Begrenzung
- 14. mod_rewrite Anzahl der Parameter/Rückreferenzierungen Begrenzung
- 15. BotFramework Anzahl der Button-Klicks (OpenURL)
- 16. Begrenzung der gleichzeitigen Threads gleich der Anzahl der Prozessoren?
- 17. Begrenzung der Anzahl generischer Parameter in .NET?
- 18. Bash: Begrenzung der Anzahl gleichzeitiger Jobs?
- 19. Pandas HDF Begrenzung der Anzahl der Zeilen der CSV-Datei
- 20. Begrenzung der Anzahl der von der JVM verwendeten Threads
- 21. Django: Begrenzung der Anzahl der Beziehungen in einer OnetoMany-Beziehung
- 22. Akteur-Modellmuster: Begrenzung der Anzahl der gleichzeitig laufenden Akteure
- 23. JavaScript - Wie man eine beliebige Anzahl von Klicks auf eine Schaltfläche zählt
- 24. So verfolgen Sie die Anzahl der Klicks einer Schaltfläche in der Fabric-Analyse
- 25. Begrenzung der Anzahl der Zeilen in einer ContentResolver.query() - Funktion
- 26. jQuery Animation abhängig von der Anzahl der Klicks
- 27. Begrenzung der maximalen Anzahl der aufgerollten Protokolldateien in log4j2
- 28. Spring Boot - Begrenzung der Anzahl der erstellten Verbindungen
- 29. Gibt es eine Begrenzung der Anzahl der HTML-Elemente, die der Browser ohne Probleme anzeigen kann?
- 30. Begrenzung der C# -Benutzeroberfläche auf einen Eingang
Was hast du bisher gemacht? Irgendein Code? Bitte sehen Sie: https://stackoverflow.com/help/asking –
Verwenden Sie einen Counter-Mechanismus und settimeout, um dies zu erreichen. –
whats that Accept-Taste ist alles über. –