allora ... non è possibile, IN NESSUN MODO, da remoto, ottenere il nome della macchina windows.
Forse è possibile farlo se le macchine sono nella stessa rete e sul server o è presente samba con linux o si usa windows.
Nel secondo caso non saprei mentre nel primo so come fare.
Lanciando il comando
smbclient -L 192.168.0.5 -g -N
si ottiene la lista dei file condivisi
Il parametro -L deve contenere l'IP, mentre il parametro -N serve ad annullare la richiesta della password, ovvero se viene richiesta dal client viene spedita una password vuota.
L'opzione -g indica a samba di fare un output facilmente parsabile da un software che è quello che serve.
L'output è questo:
se c'è disabilitato l'accesso anonimo, ovviamente, non si potranno elencare le cartelle condivise.codice:Domain=[NOTEBOOKDANIELE] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] IPC|IPC$|IPC remoto Disk|Downloads| Disk|web| Disk|Condivisa| session request to 192.168.0.5 failed (Called name not present) session request to 192 failed (Called name not present) Domain=[NOTEBOOKDANIELE] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
Adesso basta lanciare una bella espressione regolare per estrarre da
Domain=[NOTEBOOKDANIELE]
solo
NOTEBOOKDANIELE
e si ottiene il nome del computer remoto.
la reg exp potrebbe essere qualcosa tipo:
preg_match('/Domain=\[([^\]]+)\]/s', $outputText, $results);
ed estrarre quindi da $results[1] (o $results[0], ora non ricordo) il valore!
L'espressione regolare non l'ho provata ma dovrebbe funzionare, in caso di problemi avvisatemi che faccio 2 test.
Se siete su server linux dovete lanciare smbclient tramite sudo, quindi necessitate di avere sudo configurato per lanciare un tool di samba.
Se siete su windows non ho proprio idea di come potete fare direttamente con php
Forse usando gli oggetti COM e le WMI da php su windows potete acquisire il nome remoto, altrimenti comunque vi serve un software esterno.
Per maggiori informazioni su come fare usando C# e WMI qua http://www.csharphelp.com/archives2/archive334.html
Il nome che estraete risolvendo l'hostname può essere il nome della macchina, come l'indirizzo ip se il server windows è configurato male (ergo niente server dns centralizzato) ^^