Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Preciso pegar o endereço MAC do computador do usuário via PHP. Alguém pode me ajudar?
Estou com a seguinte situação: temos 3 modelos de impressoras não-fiscais da Bematech (MP-2100, MP-4000 e MP-4200), a impressora MP-2100 imprime pela porta LPT1, a MP-4000 pela porta USB e a MP-4200 por uma porta COM.
Para usar as impressoras tenho que passar o modelo e a porta.
O sistema está pronto e funcionando para as duas primeiras, usando cookies. A questão é que não teria como utilizar cookies para a impressora MP-4200 pois, em cada computador que ele for instalado poderá estar em uma porta COM diferente.
A solução pensada é cadastrar o computador, no momento da instalação o técnico iria informar em qual porta a impressora estaria conectada, assim, ao logar no sistema seria feita uma busca no BD para carregar o modelo e a porta da impressora daquele computador.
Consegui a solução abaixo que roda em servidor Windows (local) e me retorna o endereço MAC corretamente. Mas nosso servidor (Locaweb) é Linux.
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);
#look for the output line describing our IP address
foreach($lines as $line){
$cols=preg_split('/\s+/', trim($line));
if ($cols[0]==$ipAddress){
$macAddr=$cols[1];
}
}
$MAC = strtoupper(str_replace("-", ":", $macAddr));
echo $MAC;
Ao dar um var_dump na variável $lines, localmente ele retorna:
array
0 => string '' (length=0)
1 => string 'Interface: 192.168.0.150 --- 0x10003' (length=36)
2 => string ' Endere‡o IP Endere‡o f¡sico Tipo' (length=50)
3 => string ' 192.168.0.151 c8-9c-xc-4e-3c-84 dinƒmico ' (length=56)
4 => string '' (length=0)
Ao dar um var_dump na variável $lines, na Locaweb ele retorna:
array(2) { [0]=> string(33) "arp: in 1 entries no match found." [1]=> string(0) "" }
Será que me fiz entender? :)
Conto com a ajuda de todos.
Sugiro que pegue pelo nome do equipamento. Acho que vai ser mais eficiente.
Pegar o MAC Address é até possível em algumas circunstâncias.
Vai seguir com esta ideia assim mesmo?
----------
O serviço roda online? A situação não melhorou, muito pelo contrário.
Os métodos conhecidos e diretos para extrair o MAC Address dos equipamentos, estes devem estar no mesmo seguimento de rede.
Estava pensando aqui numas gambiarras, mas acho melhor nem comentar. Rs
Acho que com o MAC Address é melhor pois é unico para cada computador, enquanto nome, você pode altera-lo sem problemas...
Sugiro que pegue pelo nome do equipamento. Acho que vai ser mais eficiente.
Pegar o MAC Address é até possível em algumas circunstâncias.
Vai seguir com esta ideia assim mesmo?
Ah sim, se o serviço estiver online acredito que não vá funcionar devido ao local de rede.
Só se rodar com Hamachi ou algo no genero...
>
Acho que com o MAC Address é melhor pois é unico para cada computador, enquanto nome, você pode altera-lo sem problemas...
Tem um via Javascript, mas parece que só funciona no IE... não tenho como testar aqui.
Se for uma rede de computadores, de verdade, um usuário qualquer não poderá alterar o nome dos computadores a revelia.
Sim, não pode trocar a revelia, mas pode alterar.. Enquanto MAC é bem mais complicado trocar (se eu não me engano só da para trocar com programa).
Você comentou com javascript.. Não vejo como.. E se for só IE, piorou.. ehehehe
>
Tem um via Javascript, mas parece que só funciona no IE... não tenho como testar aqui.
Se for uma rede de computadores, de verdade, um usuário qualquer não poderá alterar o nome dos computadores a revelia.
MAC Address, troca a placa de rede... Troca o MAC.Ah, mas quem vai trocar a placa de rede?
Não sei, mas pode trocar.
Mesmo caso. :closedeyes:
Salve Amigo! tudo bem?
Bem, acredito que sua solução seja uma solução valida.
Mas acredito que possa ser um problema também pois para você conseguir pegar o MAC Address você precisa usar algumas funções que são desabilitadas no PHP.
Aqui no forum mesmo tem um Tópico sobre isso:
http://forum.imaster...servidor-linux/
Aqui também possui outra forma de pegar o MAC Address:
http://nazmulb.wordp...ess-using-php/?
Dando uma pesquisada na net, achei um código de um gringo muito loco, rsrsrs
http://www.evebit.com/en/about/developers-blog/item/204-php-get-mac-address.html
Veja qual lhe ajuda!
Abraços