Можно ли постом отправить данные, не используя скрытый инпут?
Без скрытого поля никак не обойтись, или есть способы?
Есть , удали input  hidden, а в файле php используй $_SERVER['HTTP_X_FORWARDED_FOR'] or $_SERVER['REMOTE_ADDR']
Я бы оставил скрытое поле. Не вижу в этом проблемы.
Понятно, что вы привели пример - хотите получить ip пользователя. И вам правильно сказали - лучше это делать в PHP ($_SERVER['REMOTE_ADDR']).
Но не уточнили, что это ещё верно с точки зрения безопасности.
Но вернемся к передаче данных. Произвольных.
Так или иначе их проверка всегда должна быть на сервере. Поэтому любые "хитрости" на клиенте бесполезны. Или не имеют смысла. Только усложнят вам задачу.
Поэтому самый простой и наверно правильный способ - скрытое поле.