Ir para conteúdo

POWERED BY:

Arquivado

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

Dinnamus

Saber qual usuario fez login como cliente no windows

Recommended Posts

Bem, estou quebrando minha cabeça como posso descobrir qual usuario está logado na intranet (windows) para ver se ele tem acesso ao sistema que quero disponibilizar.

 

Já vi muitos tópicos, mas nenhum me deu uma solução.

 

Vi soluções via IIS, via .asp, via javascript usando o IE (não funcionou comigo). Que seja o IE, mas há como saber do usuário cliente que quer acessar?

 

Código javascript que diziam funcionar:

[

...

 

<script language="javascript">
function mostra() {
var wshShell = new ActiveXObject("WScript.Shell");
var usuario = wshShell.ExpandEnvironmentStrings("%USERNAME%");
alert(usuario);
}
</script>
...
<form><input type="button" value="Teste" onclick="mostra();"/></form>
...

]

 

Porém, comigo nada apareceu (usando o IE).

 

Alguém teria uma solução funcional para ser usada em PHP, ou JS, ou JQUERY, ou AJAX, ou HTML, ou CSS, ou código morse, linguagem de sinais, ou lingua do "P"?

Desde que não seja IIS ou ASP?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentou

 

 

echo $_SERVER['LOGON_USER''];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não mostrou nada e só deu esse aviso: Notice: Undefined index: LOGON_USER in C:\wamp\www\minhapasta\index.php on line "tal"

 

O Código que postei no tópico sobre o javascript, até exibe o usuário, mas desde que esteja fora do apache ( tipo dar dois cliques num index.html na área de trabalho. aí mostra o usuário logado no windows), mas isso não funciona dentro do apache ou nem mesmo num servidor hospedado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que a solução mais viavel para seu problema sera criar login e senha comun mesmo.

Outra solução seria um intermediario tipo um software desktop.

Outra dica se você programar em java da uma pesquisada se a posibilidade com applet.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É! Achei esse código em JSP que faz isso rapidinho! Vou usá-lo mesmo.

Nem precisou de applet Valeu pelaa ajuda dee vcs!

 

Código usado:

 

 

<%@ page import="sun.misc.BASE64Encoder" %><p><h1>Network Windows USERNAME without any login (ie)</h1></p><%String auth = request.getHeader("Authorization");if (auth == null) {        response.setStatus(response.SC_UNAUTHORIZED);        response.setHeader("WWW-Authenticate", "NTLM");        return;}if (auth.startsWith("NTLM ")) {         byte[] msg =            new sun.misc.BASE64Decoder().decodeBuffer(auth.substring(5));        int off = 0, length, offset;        String s;        if (msg[8] == 1) {             off = 18;            byte z = 0;            byte[] msg1 =                {(byte)'N', (byte)'T', (byte)'L', (byte)'M', (byte)'S',                (byte)'S', (byte)'P', z,                (byte)2, z, z, z, z, z, z, z,                (byte)40, z, z, z, (byte)1, (byte)130, z, z,                z, (byte)2, (byte)2, (byte)2, z, z, z, z, //                 z, z, z, z, z, z, z, z};            //             response.setStatus(response.SC_UNAUTHORIZED);            response.setHeader("WWW-Authenticate", "NTLM "                + new sun.misc.BASE64Encoder().encodeBuffer(msg1).trim());            return;        }         else if (msg[8] == 3) {                 off = 30;                length = msg[off+17]*256 + msg[off+16];                offset = msg[off+19]*256 + msg[off+18];                s = new String(msg, offset, length);                //out.println(s + " ");        }         else                return;        length = msg[off+1]*256 + msg[off];        offset = msg[off+3]*256 + msg[off+2];        s = new String(msg, offset, length);        //out.println(s + " ");        length = msg[off+9]*256 + msg[off+8];        offset = msg[off+11]*256 + msg[off+10];        s = new String(msg, offset, length);        out.println("Hello  <span style='position:relative; width:190;"             + " height:10;filter:glow(Color=#009966,Strength=1)'>");        out.println(s + "</SPAN>");        }%></BODY>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte. Consegui pegar o login do usuário remoto (ele acessando via browser por uma intranet) em PHP mesmo. Usei algumas funções e alguns comandos do DOS.

Não irei postar aqui código pois não sei se funcionará em outras intranets. Mas se interessar a alguém, mande mensagem pra mim

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta ai solução, so n vai funcionar em linux.

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta ai solução, so n vai funcionar em linux.

usei o "nbtstat -a" na função shell_exec() passando depois o IP da máquina cliente.

Peguei o IP da máquina cliente dessa forma:

 

public function getIP() {

$ip;

if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP");

else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR");

else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR");

else $ip = "DESCONHECIDO";

return $ip;

}

 

Depois dei alguns explode() para dividir a string em arrays e separar somente o nome do usuario logado.

 

Prontinho! já estava com o nome do usuário logado, bastava agora verificar no banco de dados se esse usuário logado estava apto a acessar o sistema

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.