одноразовый hash: клиент прислал hash и random - заносите в БД в таблицу hash. Приходит тот же (проверяете уже по базе) повторно - сразу же игнорируете с ошибкой.
@FanatPHP да нет... я реально не разбираюсь и давно все понял. просто знаю как сделать чтобы работало, установив везде UTF-8. А детально - не подходил к теме.
@dranets13 к учетке можно привязать много чего, включая шлюз/ip, gps-координаты, mac Wi-Fi точки доступа и номер канала (тоже потом смените на тот, что на работе).