name - Obtener el nombre de la máquina cliente en PHP
php obtener ip local (7)
¿Qué es esta "otra información"? ¿Una dirección IP?
En PHP, usa $_SERVER[''REMOTE_ADDR'']
para obtener la dirección IP del cliente remoto, luego puede usar gethostbyaddr()
para intentar convertir esa IP en un nombre de host, pero no todas las IP tienen configurada una asignación inversa.
Este programa solo devuelve el nombre de la máquina cliente solo en localhost
echo gethostbyaddr($_SERVER[''REMOTE_ADDR'']);
Si se ejecuta desde un servidor en línea, no se muestra el nombre de la computadora y se muestra otra información. Entonces, ¿hay alguna forma de obtener el nombre de la computadora en PHP cuando el programa se ejecuta desde el servidor en línea?
En oposición a la mayoría de los comentarios, creo que es posible obtener el nombre de host del cliente (nombre de la máquina) en PHP simple, pero está un poco "sucio".
Al solicitar la autorización "NTLM" a través del encabezado HTTP ...
if (!isset($headers[''AUTHORIZATION'']) || substr($headers[''AUTHORIZATION''],0,4) !== ''NTLM''){
header(''HTTP/1.1 401 Unauthorized'');
header(''WWW-Authenticate: NTLM'');
exit;
}
Puede forzar al cliente a enviar credenciales de autorización a través del formato NTLM. El hash NTLM enviado por el cliente al servidor contiene, además de los credenciales de inicio de sesión, el nombre de la máquina del cliente. Esto funciona solo entre navegadores y PHP.
$auth = $headers[''AUTHORIZATION''];
if (substr($auth,0,5) == ''NTLM '') {
$msg = base64_decode(substr($auth, 5));
if (substr($msg, 0, 8) != "NTLMSSPx00")
die(''error header not recognised'');
if ($msg[8] == "x01") {
$msg2 = "NTLMSSPx00x02"."x00x00x00x00".
"x00x00x00x00".
"x01x02x81x01".
"x00x00x00x00x00x00x00x00".
"x00x00x00x00x00x00x00x00".
"x00x00x00x00x30x00x00x00";
header(''HTTP/1.1 401 Unauthorized'');
header(''WWW-Authenticate: NTLM ''.trim(base64_encode($msg2)));
exit;
}
else if ($msg[8] == "x03") {
function get_msg_str($msg, $start, $unicode = true) {
$len = (ord($msg[$start+1]) * 256) + ord($msg[$start]);
$off = (ord($msg[$start+5]) * 256) + ord($msg[$start+4]);
if ($unicode)
return str_replace("/0", '''', substr($msg, $off, $len));
else
return substr($msg, $off, $len);
}
$user = get_msg_str($msg, 36);
$domain = get_msg_str($msg, 28);
$workstation = get_msg_str($msg, 44);
print "You are $user from $workstation.$domain";
}
}
Y sí, no es una simple "lectura de la función del nombre de la máquina", porque se le muestra al usuario un cuadro de diálogo, pero es un ejemplo de que sí es posible (en comparación con las demás declaraciones aquí).
El código completo se puede encontrar aquí: https://en.code-bude.net/2017/05/07/how-to-read-client-hostname-in-php/
Manual de PHP dice:
gethostname (PHP> = 5.3.0) gethostname - Obtiene el nombre de host
Mira:
<?php
echo gethostname(); // may output e.g,: sandie
// Or, an option that also works before PHP 5.3
echo php_uname(''n''); // may output e.g,: sandie
?>
http://php.net/manual/en/function.gethostname.php
Disfrutar
No en PHP.
phpinfo(32)
contiene todo lo que PHP puede saber sobre un cliente en particular, y no hay un nombre de computadora [windows]
Tratar
echo getenv(''COMPUTERNAME'');
Esto devolverá su nombre de computadora.
gethostname()
usando la IP de $_SERVER[''REMOTE_ADDR'']
mientras accede al script de forma remota devolverá la IP de su conexión a Internet, no de su computadora.
function GetComputerName()
{
try
{
var network = new ActiveXObject(''WScript.Network'');
// Show a pop up if it works
alert(network.computerName);
}
catch (e) { }
}
Esto es javascript que funcionará en IE, a veces. Eso es lo mejor que puedes hacer. Luego puede insertar ese valor en un control y luego, cuando el usuario publica en el servidor, puede leerlo en PHP. PHP no puede hacer lo que quiere porque se ejecuta en el servidor, no en el cliente, por lo que no puede buscar los datos del cliente.