Autentica��o HTTP com Classe usando banco de dados
Compativel com:
banco = mysql versao acima do 4.1
php5
fun��es = mysqli

obs: Mas se quiser editar ele funciona no php4.
e outra da pra usar esse script como conexao com o banco e fazer tudo que precisa fazer com o banco de dados nao � s� pra autentica��o
Se quiserem usar esse sisteminha nem precisa
de manter meus creditos  :D

Essa classe nao precisa abrir nem fechar a conexao ela ira fazer isso automaticamente s� usar o comando 
Comando::Executar(Sql)

Classe que cuida de abrir e fechar a conexao e execultar a query
conexao_cmdsql.php

<?php

class Conexao
{
	var $host    = "localhost";
	var $usuario = "usuario";
	var $senha   = "senha";
	var $banco   = "banco";	
	public $mysqli;
	
	public function Abrir() 
	{	
   		$this->mysqli = new mysqli($this->host, $this->usuario, $this->senha, $this->banco);
	}
	   	
	public function Fechar() 
	{
		$this->mysqli->close();
	}
}

class Comando
{
	function Executar($sql) 
	{
	  $con = new Conexao();
	  $con->Abrir();  
	  $re = $con->mysqli->query($sql);
	  $con->Fechar();
	  return $re; 
	}
}

?>[/php]

Classe que cuida da permissao de acesso do usuario e autentica��o
e a outra Classe cuida de verificar se a sessao existe
[color=blue]permissao.php[/color]

[php]<?php

class Permissao
{
	function Confere_Identificacao() 
	{	
		if (isset($_SERVER["PHP_AUTH_USER"]) || isset($_SERVER["PHP_AUTH_PW"]))
		{ 	
			include "conexao_cmdsql.php";

			$re = Comando::Executar("Select count(*) as total from usuarios where nome = '".$_SERVER["PHP_AUTH_USER"]."' and senha = md5('".$_SERVER["PHP_AUTH_PW"]."')");
			$total = $re->fetch_object();
						
				if ($total->total != 0 )
				{
					$dados["nome"]   = $_SERVER["PHP_AUTH_USER"];
					$dados["senha"]  = $_SERVER["PHP_AUTH_PW"];
					$dados["logado"] = true;
					session_start();
					$_SESSION["dados"] = serialize($dados);
				}	
				
				else
				{
					unset($_SERVER["PHP_AUTH_USER"]);
					unset($_SERVER["PHP_AUTH_PW"]);
					session_start();
					$_SESSION = array();
					session_destroy();
					$this->Identificar();
				}
		}	

		else
		{
			$this->Identificar();
		}
		
	}	
			
	function Identificar() 
	{
		header('WWW-Authenticate: Basic realm = "Area Restrita"');
		header('HTTP/1.0 401 Unauthorized');
	   	echo '<center><h1>Acesso Restrito</h1></center>';
		exit;
	}
}

class Confirmacao
{
	var $seg;
		
	function Verifica_Sessao() 
	{
		if ( isset( $_SESSION["dados"] ) )
		{
			$sessao = unserialize ($_SESSION["dados"]);
			$nome   = $sessao["nome"];
			$senha  = $sessao["senha"];
			$logado = $sessao["logado"];
			
			include "conexao_cmdsql.php";
			$re = Comando::Executa( "Select count(*) as total from usuarios where nome = '$nome' and senha = md5('$senha')" );
			$total = $re->fetch_object();

				if ( $total->total == 0 and $logado != 1 )
				{					
					$this->seg = new Permissao();
					$this->Confere_Identificacao();
				}
		} 

		else
		{
			$this->seg = new Permissao();
			$this->Confere_Identificacao();
		}
	}
}


?>

Script que testa se o usuario esta logado ou nao
protecao.php

<?php
include "permissao.php";

if (isset($_SESSION["dados"]))
{
	$sessao = new Confirmacao();
	$sessao->Verifica_Sessao();
} 

else
{
	$seg = new Permissao();
	$seg->Confere_Identificacao();
}
?>


Modo de usar so colocar include "protecao.php"; nas paginas que vc quer proteger

qualquer duvida poste no forum