Hey guys, im building an voting app, which user are able to vote up to 100 times. But how can i prevent that from auto clickers or bots for example? I thought blocking the button to vote when reach that value, but to do that i would need to have a sign in to identify each user, right? But is there any other alternative to it? Like reCAPTCHA or some way to manage it without having to login, because i’d have to pay glide for the amount of users which would access the app
How many users are you expecting to vote?
A Starter Plan allows up to 1000 public users, and a Pro plan up to 5000.
Are you expecting more than that per month?
Without users signing in, you could make use of a user specific column to maintain a vote count per “user”, but it wouldn’t be fool proof. For example, if a user reloaded the page the count would reset.
It would be more than 5000 users, that is why i think it doesnt make sense to have a login system. I’m building this app to a close friend.
So, there’s no way to prevent bots to click a lot in a short amount of time? My only goal here is just prevent someone let it clicking automatically and make it unfair, i don’t care if it is autoclicked or not, i just don’t want to be an unfair voting
I think that’s something you’d have to test. I guess it depends on how sophisticated the bot is. A bot is still a “user”, and so storing the vote count in a user specific column could be effective against something that just loads the page and starts clicking. You could also build in a time delay where the voting button is disabled for a short time after each vote.
Another thing you might be able to do is use some JavaScript to detect the User IP address, and then restrict votes by IP. Again, that wouldn’t be fool proof, as it’s trivial for a user to change their IP address.
At the end of the day, the most effective way will be to force users to sign in. Anything less than that will be a partial solution only, I think.
You could also build in a time delay where the voting button is disabled for a short time after each vote.
I think that is interesting, but if i disable the button, i disable for all of the users right? again, the only way to disable only for the user that clicked would be with a sign in, right?
About the JavaScript, how can i do it? is it a action when the clicking the voting button?
If you are using a user specific column to store a timestamp as the basis to control button visibility, then no, it won’t affect other users. It will be a unique experience for each user.
Good idea, but how can i set a column a current time by default when the users open the app for example, to make the button’s math work? I mean, as i’m not using sign in, every time the user come back again the column would be reseted, how can i make a default value being the current time (now)?
You would have to set the column when the user clicks on a button to vote. Then use a math column to add a certain amount of time or subtract that timestamp from now. Then set a condition to show the button if the time has passed.
Again, you are not requiring users to be signed in, so your options are limited as far as tracking a specific user. This won’t prevent a user from refreshing the app, who h resets those values.
One possible idea is to show a screen with a button that sets a timestamp and takes them to another screen where the vote button is located. That way you could set an initial timestamp on the way I to the app.