Ir ao conteúdo
  • Cadastre-se

PHP Exibir IP da máquina local - PHP


Posts recomendados

Tenho uma rede interna a qual 5 usuários com login e senha acessam nosso admin via web.

 

A rede está configurada IPv4 para obter um endereço de IP automaticamente, mas posso alterar isso tanto na máquina local, quanto definir pelo MAC um IP reservado para cada usuário no DHCP do roteador .

 

Quando através da minha aplicação hospedada na Locaweb eu tento pelo PHP recuperar o IP da máquina local, só consigo exibir o que recebo dinamicamente do provedor, a qual está como WAN em meu roteador.

 

Então por ex: Minha WAN é 201.3.212.112 e pelo ipconfig meu computador em rede é 192.168.1.100...eu quero que o PHP exiba 192.168.1.100

 

Tem algum jeito de fazer isso? 

Link para o comentário
Compartilhar em outros sites

15 horas atrás, DiF disse:

@nldj Não tem como fazer isso.  O PHP vai sempre pegar o IP do servidor.  Se está rodando online(hospedado) vai pegar o IP do provedor. Mas você rodar localmente usando o easyPHP, xampp e outros parecidos, vão retornar o seu IP local.

 

DIF, lí que dá pra pegar o MAC Address usando os comandos system(), exec(), shell, etc...minha duvida é se eu executar em minha aplicação online, vou acessar meu servidor ou minha máquina local?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@nldj Não.  Por um simples detalhe:  Segurança.

Bem.. você pode até tentar... mas só vai conseguir retornar o ip local se o PHP estiver rodando na própria máquina. Se for online não há chance. 

Seria o mesmo caso de tentar obter o caminho real de um arquivo do campo input file. Você só vai conseguir o fake path, justamente por questão de segurança.

 

O ip é a mesma coisa. 

Até podes usar essas funções..

Existem centenas de sites que falam sobre isso. 

Link para o comentário
Compartilhar em outros sites

35 minutos atrás, DiF disse:

@nldj Não.  Por um simples detalhe:  Segurança.

Bem.. você pode até tentar... mas só vai conseguir retornar o ip local se o PHP estiver rodando na própria máquina. Se for online não há chance. 

Seria o mesmo caso de tentar obter o caminho real de um arquivo do campo input file. Você só vai conseguir o fake path, justamente por questão de segurança.

 

O ip é a mesma coisa. 

Até podes usar essas funções..

Existem centenas de sites que falam sobre isso. 

DIF, existe alguma api q eu posso requisitar online via minha aplicação PHP, onde seja possível obter o nome dos usuários do windows em rede a partir do IP do meu provedor? Tipo: eu passo o IP pra api encontrar todos que estão conectados no meu roteador e me retornar em XML, por exemplo. Tem como?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@nldj Não sei dizer com certeza. A princípio não. Pelo mesmo motivo de segurança.

Imagina que se um usuário mal intencionado use um código que retorne os usuários do windows de um computador pelo IP.  Ele poderia trocar o usuário, trocar senha... violaria a segurança da rede.

 

O que você quer é praticamente inviável.

 

Ainda não entendi a real aplicação disso que você quer.

Mas ratifico que disse mais acima.  Você só pode pegar o ip local SE e somente SE estiver rodando o script php na própria máquina.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

agora, DiF disse:

@nldj Não sei dizer com certeza. A princípio não. Pelo mesmo motivo de segurança.

Imagina que se um usuário mal intencionado use um código que retorne os usuários do windows de um computador pelo IP.  Ele poderia trocar o usuário, trocar senha... violaria a segurança da rede.

 

O que você quer é praticamente inviável.

 

Ainda não entendi a real aplicação disso que você quer.

Mas ratifico que disse mais acima.  Você só pode pegar o ip local SE e somente SE estiver rodando o script php na própria máquina.

DIF, vamos ver se você pode me dar uma ideia.

 

Eu tenho uma aplicação web com painel de usuários, clientes e funcionários, cada um com acesso por login e senha, no qual eu abro uma sessão. Tem algumas funções de clientes usadas pelos funcionários, ou seja, os funcionários se logam como sendo clientes. Na preguiça (rs) de desenvolver essas funções de clientes dentro do painel de funcionários, pensei em identificar pelo IP se é o cliente ou o funcionário que está acessando as funções de cliente, para eu gravar um log de onde partiu a requisição. Atualmente o único jeito que tenho para saber a origem é pelo ID, seja de funcionário ou de cliente, mas se o funcionário estiver logado como cliente, não consigo identificar quem acessou. 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@nldj Bueno, nestes tipos de coisa não se pode ter "preguiça"  para desenvolver algo que é de extrema importância.

Como expliquei acima, é inviável pegar o IP do usuário local via internet e fazer comparações.

Como alternativa de solução, recomendo que como seu sistema possui login e senha com banco de dados, você deve remodelar seu banco de dados adicionando o que precisa.

 

Você quer identificar se é usuário normal(cliente) ou funcionário. Então você cria uma tabela nova contendo o tipo de cadastro.

ID  Tipo
1   admin
2   funcionario
3   cliente

Nesta tabela o campo ID é auto incrementado.

Com esta tabela pronta,  você modifica a sua tabela atual de usuários, onde na "estrutura" você adiciona um novo campo chamado  Tipo_user.

 

Ainda na tela da estrutura da sua tabela, você procura o lugar dos índices(index) e adiciona um índice do tipo INDEX e selecione o novo campo criaro o Tipo_user.

 

Com isso, você tem os preparativos para fazer um relacionamento 1:N entre a tabela tipo e a tabela usuarios, onde o campo Tipo_user da tabela usuários é a chave estrangeira do campo ID auto incrementado da tabela tipo.

 

Assim, você tem uma identificação direta do usuário que logou. Ou seja, se você fazer um SELECT *  FROM usuarios WHERE Tipo_user = 2  você obtém somente os dados dos usuários registrados como funcionário. Em outras palavras, você pode mostrar uma página php restrita com conteúdos, links e botões diferentes de um cliente.

 

Esta á a solução mais viável para seu problema. Só não pode ter preguiça de desenvolver :thumbsup:

 

Deixo aqui um vídeo que gravei uma vez explicando como fazer relacionamentos no PHPmyadmin

 

 

 

Link para o comentário
Compartilhar em outros sites

Obrigado DIF. A sua ideia é excelente. Se tivesse sido feito assim desde o começo, seria bem melhor e mais fácil. Mas, hoje eu tenho tabela de cliente separada e que está relacionado com outras tabelas. Então, se eu unificasse usando "Tipo_user", teria que mexer em várias outras coisas. Melhor eu deixar de preguiça e desenvolver as funções de clientes dentro do painel de funcionários. Muito obrigado pela sua atenção. Abraços,

Link para o comentário
Compartilhar em outros sites

  • Moderador

@nldj Não... você não vai unificar as tabelas.

Vai usar elas separadas, através de um relacionamento 1:N onde uma emite o valor da chave primária para chave estrangeira.

Você não vai unificar nada.

 

O que você vai precisar mudar é só criar um novo campo dentro da tabela cliente chamado de  "tipo_cliente"

Este campo apenas vai receber o valor ID correspondente da nova tabela criada "tipo_user".

Esta tabela tipo_user é separada. 

 

Para "juntar"  as duas e fazerem elas se relacionarem, depois de ter feito as dicas que dei no vídeo.. você vai usar o INNER JOIN para juntar elas SEM DE FATO JUNTAR!

 

Boa sorte! :thumbsup:

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...