Ir para conteúdo

POWERED BY:

Arquivado

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

Santoangelense

Autenticar no Active Directory com PHP e trabalhar com Sessao

Recommended Posts

Fiz algumas pesquisas na net de um sistema para trabalhar com sessão usando o AD do Windows 2008, porem atualmente parece que não está validando a senha, mesmo se eu colocar a senha errada, ele está autenticando.

 

Segue os codigos

 

index.php

 

<html>
<head>
<title>Sistema de Chamado</title>
<style type="text/css">

</style>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
<body>

<form action="valida.php" method="post" enctype="multipart/form-data" target="_top">
<p align="center">  </p>
<p align="center">  </p>
<div align="center">
<table width="557" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000">
<tr>
<td width="670"><table width="555" height="198" border="0" cellpadding="0" cellspacing="0" bordercolor="#000000" background="multimidia/imagem/bglogin.jpg">
<tr>
<td width="195" height="198" align="left" valign="top"><img src="multimidia/imagem/logologin.jpg" alt="" width="195" height="198" hspace="0" vspace="0" align="top"></td>
<td width="360" valign="top"><table width="100%" border="0">
<tr>
<th colspan="2"><div align="center">
<h1><strong>Sistema de Chamado</strong></h1>
</div></th>
</tr>
<tr>
<td width="18%"><p>Usuario :

</p></td>
<td width="82%"><input type="text" name="usuario" maxlength="50" /></td>
</tr>
<tr>
<td> Senha : </td>
<td><input type="password" name="senha" maxlength="50" /></td>
</tr>
<tr>
<td height="48"><input type="submit" value="Entrar" /></td>
<td><input name="Reset" type="reset" value="Limpar" /></td>
</tr>
<tr>
<td height="20" colspan="2">
<div align="left"><span class="style1">
<a href="esqueciSenha.php"></a>
  
<a href="Novousuario.php">Novo Usuário</a>
</span></div>
</td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>
</div>
</form>
</body>
</html>

 

 

valida.php

<?php

//Aqui estamos adicionando a pagina que possui as funcoes para o LDAP
include("seguranca.php");

//Aqui chamamos a funcao Login_LDAP que ira nos retornar True ou False
if (Login_LDAP($_POST['usuario'],$_POST['senha'])) {
//Se retornar True (login com sucesso faça os paços abaixo

//Mostra mensagem na Tela, caso demore para processar as linhas abaixo (não ficar uma tela em branco)
echo utf8_encode("usuário autenticado");
//Criar o cookie
LoginCookies($_POST['usuario'],$_POST['senha']);
//Encaminha o usuario para a proxima pagina que neste caso chama-se abertura.php
header("Location: index.php");
} else {
//Se retornar Falso execute os paços abaixo

//mostra uma mensagem na tela informando que deu errado o logon e fornece um link para voltar a pagina anterior
echo ("usuário ou senha inválida. <a href=\"javascript:history.go(-1)\">voltar</agt;");
//Chama a funcao de desconectar o usuario, esta funcao pode ser utiliza no botao sair tb da pagina, ele limpa os cookies
expulsaVisitante();
}
?>

 

 

pagina01.php

<?php
include("seguranca.php"); // Inclui o arquivo com o sistema de segurança
protegePagina(); // Chama a função que protege a página
?>

 

 

seguranca.php

<?php
// Configurações do Script
// ==============================
$_SG['abreSessao'] = true; // Inicia a sessão com um session_start()?
$_SG['validaSempre'] = true; // Deseja validar o usuário e a senha a cada carregamento de página?
// Evita que, ao mudar os dados do usuário no banco de dado o mesmo contiue logado.
$_SG['AdServer'] = '192.168.1.11';
$_SG['dominio'] = 'meudominio.com.br';
$_SG['paginaLogin'] = 'login.php'; // Página de login, caso falhe o usuario sera encaminhado para esta pagina

// ==============================
// ======================================
// ~ Não edite a partir deste ponto ~
// ======================================

// Verifica se precisa iniciar a sessão
if ($_SG['abreSessao'] == true) {
global $_SG;
session_start();
}

function Login_LDAP($user, $password)
{
global $_SG;
$ldap_server = $_SG['AdServer'];
$auth_user = $_SG['dominio'] . trim(" \ ") . $user;
$auth_pass = $password;

// Tenta se conectar com o servidor
if (!($connect = @ldap_connect($ldap_server))) {
return FALSE;
}

// Tenta autenticar no servidor
if (!($bind = @ldap_bind($connect, $auth_user, $auth_pass))) {
// se não validar retorna false
return FALSE;
} else {
// se validar retorna true
return TRUE;
}

}

Function LoginCookies($usuario,$senha)
{
global $_SG;
// Definimos dois valores na sessão com os dados do usuário
$_SESSION['usuarioID'] = $usuario; // Pega o valor da coluna 'id do registro encontrado no MySQL
$_SESSION['usuarioNome'] = $senha; // Pega o valor da coluna 'nome' do registro encontrado no MySQL

// Verifica a opção se sempre validar o login
if ($_SG['validaSempre'] == true) {
// Definimos dois valores na sessão com os dados do login
$_SESSION['usuarioLogin'] = $usuario;
$_SESSION['usuarioSenha'] = $senha;
}
}
/**
* Função que protege uma página
*/
function protegePagina()
{
global $_SG;
if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
// Não há usuário logado, manda pra página de login
expulsaVisitante();
} else if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
// Há usuário logado, verifica se precisa validar o login novamente
if ($_SG['validaSempre'] == true) {
// Verifica se os dados salvos na sessão batem com os dados do banco de dados
if (!Login_LDAP($_SG['AdServer'],$_SG['dominio'] . trim(" \ ") . $_SESSION['usuarioLogin'], $_SESSION['usuarioSenha'])) {
// Os dados não batem, manda pra tela de login
expulsaVisitante();
}
}
}
}


/**
* Função para expulsar um visitante
*/
function expulsaVisitante() {
global $_SG;
// Remove as variáveis da sessão (caso elas existam)
unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'], $_SESSION['usuarioLogin'], $_SESSION['usuarioSenha']);

// Manda pra tela de login
header("Location: ".$_SG['paginaLogin']);
}
?>

 

Alguem poderia me dar uma dica, pq mesmo colocando a senha errada, ele valida a sessão?

 

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.