Dinnamus 0 Denunciar post Postado Março 16, 2013 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
shini 318 Denunciar post Postado Março 16, 2013 tentou echo $_SERVER['LOGON_USER'']; Compartilhar este post Link para o post Compartilhar em outros sites
Dinnamus 0 Denunciar post Postado Março 16, 2013 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
Ricardo Saraiva 84 Denunciar post Postado Março 16, 2013 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
Dinnamus 0 Denunciar post Postado Março 16, 2013 É! 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
Dinnamus 0 Denunciar post Postado Março 18, 2013 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
shini 318 Denunciar post Postado Março 18, 2013 posta ai solução, so n vai funcionar em linux. Compartilhar este post Link para o post Compartilhar em outros sites
Dinnamus 0 Denunciar post Postado Abril 2, 2013 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
fermel 0 Denunciar post Postado Abril 3, 2013 só com esse código ai você pegou o nome de usuário da pessoa? Compartilhar este post Link para o post Compartilhar em outros sites