Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

murilo

Pegar endereço MAC

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites
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:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.