Ir para conteúdo

POWERED BY:

Arquivado

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

Mr Neo

[Resolvido] Falha na autenticação de Usuario

Recommended Posts

Bom dia,

 

Caros amigos, estou tentando desenvolver um projeto para a faculdade, um sistema de controle de estoque e estou tendo problemas ao autenticar o usuario, o meu banco que estou usando por equanto e local o XAMP, e o erro e qndo tento acessar da o seguinte erro..

 

Warning: mysqli::mysqli() [function.mysqli-mysqli]: (HY000/2003): Can't connect to MySQL server on 'localhost' (10061) in C:\xampp\htdocs\sistemaweb\framework\classes\classe_bancodados.inc on line 261

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\sistemaweb\framework\classes\classe_bancodados.inc:261) in C:\xampp\htdocs\sistemaweb\framework\includes\autenticacao.inc on line 6

Warning: mysqli::real_escape_string() [function.mysqli-real-escape-string]: Couldn't fetch mysqli in C:\xampp\htdocs\sistemaweb\framework\classes\classe_bancodados.inc on line 294

Fatal error: Call to a member function fetch_assoc() on a non-object in C:\xampp\htdocs\sistemaweb\framework\classes\classe_bancodados.inc on line 289

segue o framework responsavel pela autenticação

 

<?php
/**
 * Autenticação de Usuario e Controle de sessão
 */

session_start();

if($_SESSION['USUARIO_AUTENTICADO']==true) {
	return true; // O usuário está Ok, podemos continuar..
} else {
	// Validar o usuario
	if(empty($_POST['USUARIO'])||empty($_POST['SENHA'])) {
		die("<html><body><script>alert('Favor informar o usuário e a Senha');document.location.href='login.php5';</script></body></html>");
	} else {
		$_usuario = new usuario($_bd);
		if(($_res=$_usuario->login($_POST['USUARIO'],$_POST['SENHA']))==true) {
			// Vamos registra-lo
			$_SESSION['USUARIO_AUTENTICADO'] = true;
			$_SESSION['USUARIO_ID'] 	= $_usuario->getCampo('USUARIO_ID')->getValor();
			$_SESSION['USUARIO_LOGIN'] 	= $_usuario->getCampo('USUARIO_LOGIN')->getValor();
			$_SESSION['USUARIO_NOME'] 	= $_usuario->getCampo('USUARIO_NOME')->getValor();
			$_SESSION['USUARIO_EMAIL'] 	= $_usuario->getCampo('USUARIO_EMAIL')->getValor();
			// Menus e Permissões
			$_perm = new permissao($_bd);
			$_menu = new menu($_bd);
			$_autorizados = Array();
			$_SESSION['MENU'] = serialize($_menu->geraMenuHTML($_perm->retornaPermissoes($_usuario->getCampo('USUARIO_ID')->getValor()),$_autorizados));
			$_SESSION['AUTORIZADOS'] = serialize($_autorizados);
			return true;
		} else {
			die("<html><body><script>alert('{$_res}');document.location.href='login.php5';</script></body></html>");
		}
	}
}

?>

se alguem poder ajudar eu agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro não está nesse script e sim no que está fazendo a conexão com o banco de dados, tente verificar a string de conexão, usuário, senha e o nome do banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos por partes... São 4 erros e cada um tem um motivo.

 

Warning: mysqli::mysqli() [function.mysqli-mysqli]: (HY000/2003): Can't connect to MySQL server on 'localhost' (10061) in C:\xampp\htdocs\sistemaweb\framework\classes\classe_bancodados.inc on line 261

 

Não está conectado. Os dados da conexão estão errados. Verifique.

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\sistemaweb\framework\classes\classe_bancodados.inc:261) in C:\xampp\htdocs\sistemaweb\framework\includes\autenticacao.inc on line 6

 

É em função do primeiro. Quando resolver o primeiro este para.

 

Warning: mysqli::real_escape_string() [function.mysqli-real-escape-string]: Couldn't fetch mysqli in C:\xampp\htdocs\sistemaweb\framework\classes\classe_bancodados.inc on line 294

Fatal error: Call to a member function fetch_assoc() on a non-object in C:\xampp\htdocs\sistemaweb\framework\classes\classe_bancodados.inc on line 289

 

O problema é no arquivo classe_bancodados.inc. Posta ela aí pra gente poder te ajudar.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

classe_bancodedados

 

<?php
/**
 * Classe Básica para acesso a Banco de dados
 *	@abstract 
 */
abstract class BancoDados {
	protected $_Tipo = null;	// Definido por cada banco de dados
	protected $_Servidor = 'localhost';
	protected $_Porta = 0;
	protected $_Usuario;
	protected $_Senha;
	protected $_Banco;
	protected $_conn = false;
	protected $_dataset = false;
	protected $_numrows = -1;
	protected $_tupla = false;
	protected $_posatual = -1;
	protected $_ultimoerro = "";
	protected $_ind_case = CASE_UPPER;

	abstract public function Conectar();
	abstract public function executaSQL($_sql);
	abstract protected function SetNumRows();
	abstract protected function navegainterno($_pos);
	abstract protected function proximointerno();
	abstract public function escapeString($_str);
	abstract public function getLimit($_arr);
	abstract protected function SetAffectedRows();
	abstract public function multiqueries($_sql);
	
	public function SetServidor($_servidor) {
		$this->_Servidor = $_servidor; 
	}
	
	public function SetPorta($_porta) {
		$this->_Porta = $_porta;
	}
	
	public function SetUsuario($_usuario) {
		$this->_Usuario = $_usuario;
	}
	
	public function SetSenha($_senha) {
		$this->_Senha = $_senha;
	}
	
	public function SetBanco($_banco) {
		$this->_Banco = $_banco;
	}
	
	public function startTransaction() {
		$this->executaSQL('START TRANSACTION');
	}

	public function commit() {
		$this->executaSQL('COMMIT');
	}
	
	public function ROLLBACK() {
		$this->executaSQL('ROLLBACK');
	}
	
	protected function isSELECT($_sql,$_res) {
		$this->_dataset = $_res;
		if(substr(trim(strtolower($_sql)),0,6)=='select') {
			$this->SetNumRows();
		} elseif(substr(trim(strtolower($_sql)),0,6)!='commit') {
			$this->SetAffectedRows();
		}
	}
	
	public function setCase($_case=CASE_UPPER) {
		$this->_ind_case = in_array($_case,Array(CASE_LOWER,CASE_NATURAL,CASE_UPPER)) ? $_case : CASE_UPPER;
	}
	
	public function getNumRows() {
		return $this->_numrows;
	}
	
	public function transforma() {
		$this->_tupla = $this->_tupla!==false&&$this->_tupla!==null ? array_change_key_case($this->_tupla,$this->_ind_case) : $this->_tupla;
	}
	
	
	public function navega($_pos=0) {
		$this->_tupla = false;
		$this->navegainterno($_pos);
		$this->_posatual = $_pos;
		$this->transforma();
		return $this->_tupla;
	}
	
	public function primeiro() {
		return $this->navega();
	}
	
	public function proximo() {
		$this->_tupla = false;
		$this->proximointerno();
		$this->_posatual++;
		$this->transforma();
		return $this->_tupla;
	}

	public function anterior() {
		return $this->navega($this->_posatual-1);
	}
	
	public function ultimo() {
		return $this->navega($this->_numrows-1);
	}
	
	public function getDadosAtual() {
		return $this->_tupla; 
	}
	
	public function getUltimoErro() {
		return "[{$this->_Tipo}]: {$this->_ultimoerro}";
	}

	public function converteDataToBD($_data) {
		// $_data Sempre no formato dd-mm-YYYY
		if(ereg("^([0-9]{1,2})-([0-9]{1,2})-([0-9]{4}).*$",$_data,$_arrdt)!==false) {
			return sprintf("'%04.4d-%02.2d-%02.2d'",$_arrdt[3],$_arrdt[2],$_arrdt[1]);
		}
		return false;
	}
	
	public function converteDataHoraToBD($_dtime) {
		// $_dtime Sempre no formato dd-mm-YYYY HH:MM:SS
		if(ereg("^([0-9]{1,2})-([0-9]{1,2})-([0-9]{4})[[:space:]]([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}).*$",$_dtime,$_arrdt)!==false) {
			return sprintf("'%04.4d-%02.2d-%02.2d %02.2d:%02.2d:%02.2d'",$_arrdt[3],$_arrdt[2],$_arrdt[1],$_arrdt[4],$_arrdt[5],$_arrdt[6]);
		}
		return false;
	}
	
	public function converteDataToHTML($_data) {
		// $_data Sempre no formato YYYY-MM-DD
		if(ereg("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}).*$",$_data,$_arrdt)!==false) {
			return sprintf("%02.2d-%02.2d-%04.4d",$_arrdt[3],$_arrdt[2],$_arrdt[1]);
		}
		return $_data; //false;
	}
	
	public function converteDataHoraToHTML($_dtime) {
		// $_dtime Sempre no formato YYYY-MM-DD HH:MM:SS
		if(ereg("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})[[:space:]]([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}).*$",$_dtime,$_arrdt)!==false) {
			return sprintf("%02.2d-%02.2d-%04.4d %02.2d:%02.2d:%02.2d",$_arrdt[3],$_arrdt[2],$_arrdt[1],$_arrdt[4],$_arrdt[5],$_arrdt[6]);
		}
		return $_dtime; //false;
	}
}

/**
 * ORACLE

class oracle extends BancoDados {
	public function __construct() {
		$this->_Tipo = 'oracle';
	}
	
	public function Conectar() {
		//oci_connect  ( string $username  , string $password  [, string $db  [, string $charset  [, int $session_mode  ]]] )
		if(($this->_conn=@oci_connect($this->_Usuario,$this->_Senha,$this->_Banco,"american.we8iso8859p1"))===false) {
			$_e = oci_error();
			$this->_ultimoerro = "Erro na Conexão com o Banco de Dados : {$_e['message']}";
		}
		return $this->_conn;
	}
}
 */


/**
 * Classe para gerenciamento do banco de dados PostgreSQL (pgsql)
 *
 */
class pgsql extends BancoDados {
	
	public function __construct() {
		$this->_Tipo = 'pgsql';
	}
	
	protected function SetNumRows() {
		$this->_numrows = ($this->_dataset!==false ? pg_num_rows($this->_dataset) : 0);
	}
	
	public function Conectar() {
		$_strcon = "host={$this->_Servidor} ";
		$_strcon.= "dbname={$this->_Banco} ";
		$_strcon.= "user={$this->_Usuario} ";
		if($this->_Senha!=NULL&&$this->_Senha!="") {
			$_strcon.= "password={$this->_Senha} ";
		}
		if(is_int($this->_Porta)) {
			$_strcon.= "port={$this->_Porta}";
		}
		if(($this->_conn = @pg_connect($_strcon))===false) {
			$_e = error_get_last();
			$this->_ultimoerro = "Erro na Conexão com o Banco de Dados : {$_e['message']}";
		}
		return $this->_conn;
	}
		
	public function executaSQL($_sql) {
		if($this->_conn!==false) {
			if(($_res=@pg_query($this->_conn,$_sql))===false) {
				$this->_ultimoerro = "Erro ao Executar o comando {$_sql} : " . pg_last_error();
			} else {
				$this->isSELECT($_sql,$_res);
			}
			return $_res;
		} else {
			return false;
		}
	}
	
	protected function navegainterno($_pos) {
		if(pg_result_seek($this->_dataset,$_pos)!==false) {
			$this->_tupla = pg_fetch_assoc($this->_dataset);
		}
	}
	
	protected function proximointerno() {
		$this->_tupla = pg_fetch_assoc($this->_dataset);
	}
	
	public function escapeString($_str) {
		return pg_escape_string($this->_conn,$_str);
	}
	
	public function getLimit($_arr) {
		return " {$_arr['LIMIT']} OFFSET {$_arr['OFFSET']}";
	}
	
	public function setAffectedRows() {
		$this->_numrows = ($this->_dataset!==false ? pg_affected_rows($this->_dataset) : 0);
	}
	
	public function multiqueries($_sql) {
		return $this->executaSQL($sql);
	}
	
}

/**
 * Classe para gerenciamento do banco de dados MySQL
 *
 */
class mysql extends BancoDados {
	
	public function __construct() {
		$this->_Tipo = 'mysql';
	}
	
	protected function SetNumRows() {
		$this->_numrows = ($this->_dataset!==false ? $this->_conn->num_rows : 0);
	}
	
	public function Conectar() {
		if(($this->_conn = new mysqli($this->_Servidor,$this->_Usuario,$this->_Senha,$this->_Banco,$this->_Porta))===false) {
			$this->_ultimoerro = "Erro na Conexão com o Banco de Dados : " . mysqli_connect_error();
		}
		return $this->_conn;
	}
	
	public function executaSQL($_sql) {
		if($this->_conn!==false) {
			if(($_res=@$this->_conn->query($_sql))===false) {
				$this->_ultimoerro = "Erro ao Executar o comando {$_sql} : " . $this->_conn->error;
			}
			$this->isSELECT($_sql,$_res);
			return $_res;
		} else {
			return false;
		}
	}
	
	protected function navegainterno($_pos) {
		if($this->_dataset!==false) {
			if($this->_dataset->data_seek($_pos)!==false) {
				$this->_tupla = $this->_dataset->fetch_assoc();
			}
		}
	}
	
	protected function proximointerno() {
		if($this->_dataset!==false) {
			$this->_tupla = $this->_dataset->fetch_assoc();
		}
	}

	public function escapeString($_str) {
		return $this->_conn->real_escape_string($_str);
	}
	
	public function getLimit($_arr) {
		return " {$_arr['OFFSET']},{$_arr['LIMIT']}";
	}

	public function setAffectedRows() {
		$this->_numrows = ($this->_dataset!==false ? $this->_conn->affected_rows : 0);
	}
	
	public function multiqueries($_sql) {
		return $this->_conn->multi_query($sql);
	}
	
}
?>

 

Conectando com o banco

 

<?php
/**
 * Configurador para acesso ao Banco de Dados
 * Altere os valores de $_servidor, $_banco, $_usuario, $_senha e $_porta
 * 
 */

/**
 * @var string define o tipo do banco de dados, padrão pgsql (opção atual mysql)
 */
$_tipobd = 'mysql';
/**
 * @var string define o endereço do servidor do banco de dados
 */
$_servidor = "localhost";
/**
 * @var integer Porta de conexão
 */
$_porta = 5432;
/**
 * @var string define o nome do banco de dados que desejamos conectar
 */
$_banco = "sistemaweb";
/**
 * @var string informa o nome do usuário
 */
$_usuario = "root";
/**
 * @var string Senha do usuário
 */
$_senha = "";

/**
 * Conecta com o Banco de dados e retorna uma instancia de bancodados
 */
$_bd = new $_tipobd();
$_bd->SetServidor($_servidor);
$_bd->SetPorta($_porta);
$_bd->SetBanco($_banco);
$_bd->SetUsuario($_usuario);
$_bd->SetSenha($_senha);
if($_bd->Conectar()===false) {
	die("<p style='color:red;font-weight:bold;text-align:center;'>Erro na conexão com o Banco de Dados {$_bd->getUltimoErro()}</p>");
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa vida!!! Quanto código pra fazer uma coisa tão simples!

 

 

Existem maneiras melhores de fazer isso...da uma pesquisa no Google...

 

Eu utilizo o princípio KISS(keep it simple, stupid) para desenvolver todos os sistemas...hoje você encontra classes gigantescas e no final das contas, você usa somente alguns poucos métodos que ela oferece...

 

Pesquise no Google por classes de conexão que você vai achar coisas mais simples e que funcionam 100% ;)

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro não está nesse script e sim no que está fazendo a conexão com o banco de dados, tente verificar a string de conexão, usuário, senha e o nome do banco de dados.

 

Conferiu o que o João falou?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

resolvi galera era a porta de conectar vlw pela ajuda

 

tambem estou com este mesmo problema, qual porta devo usar e como configurar. Aguardo sua ajuda. grato.

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.