Mr Neo 0 Denunciar post Postado Agosto 28, 2009 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
João Batista Neto 448 Denunciar post Postado Agosto 28, 2009 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
Matias Rezende 50 Denunciar post Postado Agosto 28, 2009 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
Mr Neo 0 Denunciar post Postado Agosto 28, 2009 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
DanielGerep 0 Denunciar post Postado Agosto 28, 2009 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
Matias Rezende 50 Denunciar post Postado Agosto 28, 2009 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
Mr Neo 0 Denunciar post Postado Agosto 28, 2009 resolvi galera era a porta de conectar vlw pela ajuda Compartilhar este post Link para o post Compartilhar em outros sites
rodrigues_lima 0 Denunciar post Postado Setembro 12, 2009 Mr. Neo você pode me ajudar estou com erro na autenticação Compartilhar este post Link para o post Compartilhar em outros sites
jota.vasconcelos 1 Denunciar post Postado Outubro 6, 2009 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