Мне нужно получить имя машины и IP-адрес с помощью php/javacript - когда я запускаю веб-страницу на локальном хосте, я получаю правильное имя компьютера и IP-адрес, но когда я помещаю страницу на веб-сервер и запускаю то же самое онлайн - код возвращает только IP-адрес клиентской машины, а НЕ имя машины.
Мне как-то нужно получить имя клиентской машины и сохранить его в базе данных для дальнейшей работы.
Итак, я пробовал тремя способами:
Способ 1 (php):
gethostbyaddr($_SERVER['REMOTE_ADDR']); -- return the ip
getenv('COMPUTERNAME'); -- return the ip only
Способ 2 (php):
echo shell_exec('echo %computername%'); -- return none instead of client computer name
Способ 3 (javascript):
alert(window.location.hostname);
Ни один из них не работает.
Я ищу вашей помощи.
Спасибо.
Я не верю, что имя компьютера отправляется на сервер по умолчанию, вероятно, оно работало локально, потому что сервер и клиент находились на одной машине. Я также не уверен, что есть надежный способ получить его от клиента через js, поэтому ответ может быть таким: вы не можете.
PHP вернет имя машины, на которой размещен ваш код, а не агент машины, обращающийся к нему. Вы должны реконструировать код.
так как я могу это сделать? Этот код возвращает IP-адрес, автоматически получая имя компьютера, когда я запускаю на локахосте. Но не онлайн. $ip = gethostbyname(getenv('COMPUTERNAME')); echo '<br>'.getenv('ИМЯ КОМПЬЮТЕРА').' преобразовано в '.$ip;
Но должен же быть способ получить имя компьютера, не так ли?
Это получит имя сервера (если установлено), а не имя клиента, и может не возвращаться с ожидаемого сетевого интерфейса. Вопрос в том, для чего вам это фактическинужно?
Не могли бы вы рассказать мне, как реконструировать код?
Собственно вопрос, для чего вам это нужно? Мне нужно получить только имя машины агента. Я получаю IP-адрес машины агента, но этот IP-адрес не является фиксированным, поэтому я хочу получить некоторый фиксированный атрибут от машины агента, чтобы затем я мог автоматически обнаруживать машину и отображать некоторую информацию соответственно.
Как говорят Джонникс и FirstIndex, вы не можете получить имя компьютера через PHP или Javascript. Судя по вашему комментарию, лучше всего использовать файл cookie или локальное хранилище, чтобы установить уникальный идентификатор для этой машины. Предостережение, если пользователь очищает хранилище или использует другой браузер. Однако наличие какого-либо логина пользователя помогает компенсировать это.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Среда на сервере явно отличается от вашей локальной машины.
Попробуйте var сбросить глобальный SERVER, чтобы узнать, к какой информации у вас есть доступ:
var_dump($_SERVER);
и что потом ? как это помогает OP выяснить имя клиентской машины?
это помогает увидеть, какие данные они могут получить, и соответствующим образом скорректировать свой код/ожидания.
Спасибо, я использую ip через $device_id = gethostbyaddr($_SERVER['REMOTE_ADDR']);ME');
PHPна стороне сервера...