Во-первых, есть несколько способов получить IP-адрес клиента с помощью PHP. Вот 3 метода, которые я знаю:
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ipAddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else if (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ipAddress = $_SERVER['HTTP_CLIENT_IP'];
} else if (isset($_SERVER['REMOTE_ADDR'])) {
$ipAddress = $_SERVER['REMOTE_ADDR'];
}
Во-вторых, если вас беспокоит нестабильное хранилище, такое как файлы cookie или сеансы, лучше всего иметь таблицу базы данных, в которой хранятся эти значения. Это может быть простая таблица с 3 столбцами: client_ip, item_id и date_created. Это позволит вам отслеживать, использовался ли определенный IP-адрес для голосования за определенный элемент.
Теперь единственная проблема, с которой я сталкиваюсь, это то, что клиент находится на работе и сидит за прокси. Итак, я думаю, у вас есть несколько вариантов, каждый со своими плюсами и минусами.