Вы можете использовать любое хранилище - БД, куки, локальное хранилище, сессию.
Куки и localstorage в принципе можно поправить или вовсе очистить средствами браузера.
БД или php-сессия в этом смысле более надежна.
А сам принцип один, вне зависимости от того, какое хранилище вы будете использовать.
1. Клик
2. Проверить, сохранено ли время предыдущего клика
3.1. Если нет, то разрешить голосование. И сохранить время.
3.2. Если да, то проверить время.
3.2.1. Если прошло достаточно, разрешить голосование и сохранить время
3.2.2. Если нет, ничего не делать или сообщить пользователю, что он слишком увлекся.