Pegar usuário da rede Windows

Enviada por Marcelo 
Marcelo
Pegar usuário da rede Windows
28 de April de 2009 às 05:04AM
Pessoal,


Tenho um sistema em PHP rodando no servidor Apache em uma máquina com Windows Server 2003. Preciso pegar o login (Nome de usuário da rede) do usuário que acessar o sistema.

Alguém pode me ajudar com isto ?


Vi em um forum que isto $_ENV['USERNAME'];
funcionaria, mas não funcionou.

Será que existe alguma configuração que deve ser feita no Apache ?

Abraço.
Marcos Regis
Re: Pegar usuário da rede Windows
28 de April de 2009 às 09:42AM
Não tem como.
Só é possível pegar o nome do usuário logado no sistema que o Apache está rodando.
É possível pegar o IP de quem acessa com $_SERVER['REMOTE_ADDR'];
Marcelo
Re: Pegar usuário da rede Windows
28 de April de 2009 às 11:29AM
Você tem certeza disto, não é possível deve ter uma maneira
Como disse ouvi dizer que esta variável $_ENV['USERNAME']; funciona, então vc sabe me dizer para que serve esta variável ?


Abraço!
Marcos Regis
Re: Pegar usuário da rede Windows
28 de April de 2009 às 11:56AM
Eu já respondi mas vou ser mais claro.
$_ENV é uma variável de AMBIENTE. Por ambiente entenda informações do sistema atual, ou onde o PHP está rodando. ENV vem do S.O.

Você só pode trabalhar com 3 tipos de informações. As do ambiente em que o WEBServer está rodando, as enviadas como argumentos de chamadas de linha de comando (ARGUMENTOS) e as enviadas via conexão HTTP.
Quando um usuário acessa uma página qq em qualquer HOST o que acontece é que informações são enviadas via HTTP para o host e estas informações são capturadas pelo WEBSERVER e ficam disponíveis para seus módulos.

Veja o conteudo de suas variaveis
crie um arquivo PHP com estas linhas
_______________ CORTE AQUI ________________
<pre>
<h3>Conteudo de $_ENV</h3>
<?php var_dump($_ENV);?>
<hr />
<h3>Conteudo de $_SERVER</h3>
<?php var_dump($_ENV); ?>
<hr />
<h3>Conteudo de $_SESSION</h3>
<?php var_dump($_SESSION); ?>
<hr />
<h3>Conteudo de $_REQUEST</h3>
<?php var_dump($_REQUEST); ?>
<hr />
<h3>Conteudo de $_COOKIE</h3>
<?php var_dump($_COOKIE); ?>
</pre>
_______________ ________________
CORTE AQUI
Marcelo
Re: Pegar usuário da rede Windows
29 de April de 2009 às 05:28AM
OK, vou desistir da idéia de utilizar o Apache e vou passar para o IIS mesmo, porque nele sei que consigo pegar o usuário da rede Windows com o seguinte recurso: $_SERVER['LOGON_USER'];

Preciso pegar o usuário para fazer a autenticação sem a necessidade de ficar digitando login e senha.
Marcos Regis
Re: Pegar usuário da rede Windows
29 de April de 2009 às 06:29AM
Realmente com o IIS é possível e se for para uma intranet é beleza.

Lembrando que esse recurso do IIS não tem no Apache porque ele não conversa com o AD como o IIS faz.
Marcelo
Re: Pegar usuário da rede Windows
29 de April de 2009 às 07:46AM
Valeu Marcos obrigado pelo esclarecimento.

Vamos ver se você pode me ajudar com o IIS, eu estava tentando usar o Apache por causa de um problema que deu no IIS.

Minhas páginas PHP não estão rodando no IIS. Tenho o PHP configurado corretamente. Veja que estranho:

Se eu colocar http://server01/pastadearquivos(no diretorio IIS)/index.php

Funciona perfeitamente.


Se eu usar outra url que seria a que o cliente deve utilizar meusistema.domino.com.br e configurar no servidor DNS para que esta url aponte para o servidor IIS não funciona.

Este sistema é apenas para acesso interno, por isso preciso do login para autenticação, só que com este problema no IIS ta difícil de resolver.

Será que vc tem alguma idéia do que possa ser ?


Abraço.
Marcos Regis
Re: Pegar usuário da rede Windows
29 de April de 2009 às 08:33AM
Bom, faz tempo que não uso IIS mas lembro de alguns detalhes.

Primeiro vc deve configurar o Site, fazendo com que ele escute a porta e aceite as conexões redirecionando o nome para o site.

Uma coisa a ser levada em consideração é o Tempo de Renovação do Cache de DNS. Costuma-se usar um tempo alto e não adianta mudar no servidor de DNS e achar que nos clientes vai apontar certo porque primeiro ele sempre irá procurar no seu cache interno e depois perguntar ao Servidor de DNS.

Entre em uma máquina cliente e abra um prompt de comando.
digite ping -a seusistema.domino.com.br

verifique se é o ip correto.
Se sim o problema é no Servidor do IIS
Se não é o DNS que ainda não foi renovado
Tente renovar manualmente com
ipconfig /flushdns (no prompt)
e se mesmo assim ainda não apontar fixe o caminho no arquivo hosts (c:\windows\System32\drivers\etc\hosts)
criando uma entrada para o seusistema
Isso é para forçar seu cliente a chamar o servidor IIS e verificar se tudo funciona.
Marcelo
Re: Pegar usuário da rede Windows
29 de April de 2009 às 10:37AM
Então, o DNS esta ok.

O problema esta sendo no IIS, até onde sei todas as configurações do IIS estão corretas, não tenho mas nem idéia de o que posso fazer.
Marcos Regis
Re: Pegar usuário da rede Windows
29 de April de 2009 às 10:52AM
Bom cara, O que sei de IIS é isso

Em Add Web Site configure as opções a seguir:

* <b>Site name:</b> Nessa opção você irá definir o nome do site, como por exemplo, IntraCorp.

* <b>Application pool:</b> Nessa opção você irá definir o application pool do site, por padrão o nome do site será o mesmo nome usado para o application pool.

* <b>Physical path:</b> Nessa opção você irá definir o caminho onde será armazenada a página web, como por exemplo, C:\ IntraCorp.

* <b>Connect as...:</b> Nessa opção você irá definir qual usuário será usado para acessar as páginas web definido em Physical path. Por padrão será usado o Pass-through authentication, com essa opção o IIS usará as credencias do usuário para acessar a página web.

* <b>Test Settings... :</b> Nessa opção você irá verificar o resultado do teste de autenticação e autoridade.

* <b>Type:</b> Nessa opção você irá definir se o tipo do site será HTTP ou HTTPS.

* <b>IP address:</b> Nessa opção você irá escolher o endereço IP no qual o site será acessado. Por padrão a opção All Unassigned é selecionada, com isso esse site responderá para solicitações para todos os endereços IPs configurados no servidor. Em nosso exemplo iremos selecionar um endereço IP do servidor.

* <b>Port:</b> Nessa opção você irá definir o endereço da porta que o site será acessado. Quando você seleciona HTTP em Type a porta 80 é automaticamente selecionada.

* <b>Host name:</b> Nessa opção você irá definir se o site terá um host name, também conhecido como domain name. Para web sites que estão disponíveis na Internet, digite o nome do domínio do web site, como por exemplo, www.guiamcse.com.br. Para web sites que estão disponíveis na intranet, você não precisa especificar um host name se usuários forem acessar o site da intranet através do nome do servidor, como por exemplo, http://nome_servidor.

*<b> Start Web site immediately:</b> Nessa opção você irá definir se o web site será iniciado após sua criação.
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.