Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
estou desenvolvendo um sistema de login que localmente funciona de forma perfeita, porem quando jogo no host ele me da problemas ao efetuar o login. Exemplificando melhor, quando vou fazer login no meu sistema hospedado no host ele me diz que meu login ou senha estao incorretos, sendo que estou usando exatamente o db que uso localmente e efetuei as configurações de forma correta(o sistema esta conectando com o db).
Agradeço desde ja,
Alexandre
tu está trabalhando com sessão, cookie, ???
estou trabalhando com cookies, sobre a conexao, creio que nao seja esse o problema, pois ele nao esta dando erro de comunicação com o db e sim erro de login/senha.
outra coisa, eu consigo cadastrar o usuario de forma tranquila, o problema e no login.
Mais uma informação que pode ser relevante, estou usando o Smart login do Thiago Alves, com algumas modificações para adaptar ao meu uso.
Cara, sem ver algum código fica dificil vislumbrar o possivel problema.
Fiz agora mais um teste de comunicação com o banco, mudei a senha e reenviei o arquivo de configuração, a mensagem de erro mudou para nao e possível comunicar com o Banco(ja tinha feito isso, mas repeti so por desencargo de consciência).
pois é cara.. sem código fica meio complicado... podem ser n coisas.
<?php
// MySQL
define('M_USUARIO','gerenc'); // Seu usuário do MySQL
define('M_SENHA','******'); // Sua senha do MySQL
define('M_HOST','localhost'); // Host do MySQL
define('M_BD','gerencial'); // Nome do seu banco de dados
// Outras
define('SL_URL','sl/'); // Onde está localizado o script
define('P_INDEX','contato/logado.php'); // Página a qual o usuario ira depois do login
?>
O arquivo de configuração e esse ai.
Existe alguma configuração no MySQl que pode estar causando isso?
bah velho.. isso não ajudou muito não hein... tipo cadê o arquivo php que vai no banco, consulta se os dados existem ou não e retorna um resultado???
Cara não precisa se atucanar em postar todo seu script aqui.
Segue abaixo o codigo do arquivo de comunicação do banco, so lembrando que esse arquivo nao sofreu nenhuma modificação ao envia-lo para o host, no webserver local tudo funciona de forma perfeita.
<?php
$data='';
// Pega as configuracoes
include('config.php');
// Finaliza a operação
Function Data($str){
exit($str);
}
// Valida os campos
Function ValidarCampo($valor,$tipo,$min,$max){
$resultado = false;
if(isset($valor[$min-1]) and !isset($valor[$max])){
Switch($tipo){
case 'nome':
$valida = preg_match('/^[A-Za-z\sáàãâäéèêëíìîïóòõôöúùûüç]+$/',$valor);
if($valida){
$valor = preg_replace('/\s{2,}/',' ',$valor);
$valor = preg_replace('/^\s+|\s+$/','',$valor);
$valor = strtolower($valor);
$valor = explode(' ',$valor);
foreach($valor as $key=>$value){
!preg_match('/^da|de$/',$value) ? $value = preg_replace('/^\w/',strtoupper($value[0]),$value) : '';
$key==0 ? $resultado = $value : $resultado .=' '.$value;
}unset($key,$value);
}
break;
case 'email':
$valor = trim($valor);
$valida = preg_match('/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,4}(\.[A-Za-z]{2}){0,1}$/',$valor);
if($valida) $resultado = strtolower($valor);
break;
case 'senha':
case 'login':
$valida = preg_match('/^[A-Za-z0-9]+$/',$valor);
if($valida) $resultado = $valor;
break;
}
}
if($resultado!=''){
return addslashes($resultado); Data('1');
}
}
// Funcao para conectar com o mysql
Function ConectaMySQL(){
$conecta = mysql_connect(M_HOST,M_USUARIO,M_SENHA) or Data('2');
$banco = mysql_select_db(M_BD,$conecta) or Data('2');
mysql_errno()==0 ? $r = true : $r = false;
return $r;
}
// Procurar usuário
Function ChecaUsuario($login){
$query = mysql_query("SELECT * FROM inscricao WHERE login='".$login."';") or Data('2');
mysql_num_rows($query)>0 ? $r = true : $r = false;
return $r;
}
// Procura email
Function ChecaEmail($email){
$query = mysql_query("SELECT * FROM inscricao WHERE email='".$email."';") or Data('2');
mysql_num_rows($query)>0 ? $r = true : $r = false;
return $r;
}
// Pega as variaveis e checa-as
if($_SERVER['REQUEST_METHOD'] == 'POST'){
// Metodo (Login/Cadastro)
$acao = isset($_POST['acao']) ? $_POST['acao'] : exit();
// Captura todas as variaveis possiveis
Switch($acao){
case 'cadastro':
$nome = ValidarCampo($_POST['nome'],'nome',4,32);
$email = ValidarCampo($_POST['email'],'email',6,64);
case 'login':
$usuario = ValidarCampo($_POST['login'],'login',4,16);
$senha = ValidarCampo($_POST['senha'],'senha',4,16);
// $senha = $_POST['senha'];
$senha = md5($senha);
// $tipo = $_POST['acesso'];
// $id = $_POST['id'];
break;
}
// Tenta conectar com o MySQL
if(ConectaMySQL()){
// Processo de login
if($acao=='login'){
if(ChecaUsuario($login)){
$query = mysql_query("SELECT * FROM inscricao WHERE login='".$login."' and senha='".$senha."';") or Data('2');
if(mysql_num_rows($query)>0){
$linha = mysql_fetch_row($query);
setcookie('SmartLoginCookie1',md5('EstouLogado'),time()+3600*24,'/');
setcookie('SmartLoginCookie2',base64_encode($linha['1']),time()+3600*24,'/');
setcookie('SmartLoginCookie3',base64_encode($linha['5']),time()+3600*24,'/');
setcookie('SmartLoginCookie4',base64_encode($linha['3']),time()+3600*24,'/');
setcookie('SmartLoginCookie5',base64_encode($linha['0']),time()+3600*24,'/');
$data='4';
}else{$data='3';}
}else{$data='3';}
}
//Processo de cadastro
if($acao=='cadastro'){
if(!ChecaUsuario($login)){
if(!ChecaEmail($email)){
// $query = mysql_query("INSERT INTO smartlogin (nome,email,usuario,senha,acesso)
// VALUES ('".$nome."','".$email."','".$usuario."','".$senha."','".$tipo."');") or Data('2');
if(mysql_affected_rows()>0){
$data='7';
}else{$data='2';}
}else{$data='6';}
}else{$data='5';}
}
$conecta = mysql_connect(M_HOST,M_USUARIO,M_SENHA) or Data('2');
mysql_close($conecta);
}
}
// Retorna a data final
echo $data;
?><?php
// MySQL
define('M_USUARIO','gerenc'); // Seu usuário do MySQL
define('M_SENHA','******'); // Sua senha do MySQL
define('M_HOST','localhost'); // Host do MySQL
define('M_BD','gerencial'); // Nome do seu banco de dados
// Outras
define('SL_URL','sl/'); // Onde está localizado o script
define('P_INDEX','contato/logado.php'); // Página a qual o usuario ira depois do login
?>
você ta usando exatamente esse codigo no host??
pq ali você ta testando localmente...
você teria q colocar o site hospedado no lugar e localhost....
Se você upou pro server sem alterar nada não vai funcionar, tem que alterar os dados de conexão.
Eu tenho outras bases hospedadas no mesmo host e uso como localhost sem problemas, inclusive um wordpress cuja a configuração e feita pelo proprio host e e usando como localhost.
Eu estou na cabeça que isso pode ser alguma coisa com o MySQL, mas ja mudei o collation pra ficar igual a do db local e ainda continuo com o mesmo erro.
O que upei sem alterar foi o script de comunicação o de conexao com db foi devidamente modificado, tanto que citei acima que por desencargo de consciencia modifiquei a senha do script e recebi erro de comunicação com o db, so para ter certeza que estava comunicando de forma legal, quando voltei a senha real do banco voltei a receber a mensagem de login/usuario invalidos, prova que ele esta buscando no banco mas nao esta encontrando.
o site de hospedagem fornece os dados para conexão...
você só precisa criar o bd online...
localhost acredito q n de certo...
Uma coisa que já acnteceu comigo, se você usa MD5 pra encriptar a senha, mas no banco de dados voce inseriu a senha manualmete, ela não vai pegar
ex: usuario: admin - senha: admin
se você colocou isso manualmente no banco é possivel que não ache, pois a senha deve estar como md5 no banco para abrir
no caso > admin = 21232f297a57a5a743894a0e4a801fc3
<?php
/**
* The base configurations of the WordPress.
*
* This file has the following configurations: MySQL settings, Table Prefix,
* Secret Keys, WordPress Language, and ABSPATH. You can find more information by
* visiting {@link http://codex.wordpress.org/Editing_wp-config.php Editing
* wp-config.php} Codex page. You can get the MySQL settings from your web host.
*
* This file is used by the wp-config.php creation script during the
* installation. You don't have to use the web site, you can just copy this file
* to "wp-config.php" and fill in the values.
*
* @package WordPress
*/
// MySQL settings - You can get this info from your web host //
/** The name of the database for WordPress */
define('DB_NAME', 'g_wrdp1');
/** MySQL database username */
define('DB_USER', 'g_wrdp1');
/** MySQL database password */
define('DB_PASSWORD', '{rR7unLqjwNn');
/** MySQL hostname */
define('DB_HOST', 'localhost');
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
/**#@+
* Authentication Unique Keys.
*
* Change these to different unique phrases!
* You can generate these using the {@link http://api.wordpress.org/secret-key/1.1/ WordPress.org secret-key service}
*
* @since 2.6.0
*/
define('AUTH_KEY', 'f7sXx[2wbB@LBwlxS{A56y>+{rR7unLqjwNnXz iq\\Ms}?(;_a#ypoR5\'3w<G5>FL~1X');
define('SECURE_AUTH_KEY', '-\"r642fed3E1d>}MdGFlh@tR!QPU%/!S_6;CjO0}^>6T{rR7unLqjwNn+ <?)3 U#*X;');
define('LOGGED_IN_KEY', 'Q^l\"6-pL{rR7unLqjwNn\zkw>OG<U$%u0:9H:Jl)+d$~jIBTt&CPL[Dp<KY4zL3y');
define('NONCE_KEY', 'asdasdjkasdjk{rR7unLqjwNnjklasdjklasdkl&^%^&*(&*(jklasdjklasdjkl&*)))');/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each a unique
* prefix. Only numbers, letters, and underscores please!
*/
$table_prefix = 'wp_';
/**
* WordPress Localized Language, defaults to English.
*
* Change this to localize WordPress. A corresponding MO file for the chosen
* language must be installed to wp-content/languages. For example, install
* de.mo to wp-content/languages and set WPLANG to 'de' to enable German
* language support.
*/
define ('WPLANG', 'pt_BR');
/ That's all, stop editing! Happy blogging. /
/** WordPress absolute path to the Wordpress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
?>
Esse codigo acima e o arquivo de configuração do wordpress que funciona perfeitamente, ele usa localhost como DB_HOST. Tenho tbm um exemplo de uma galeria que no arquivo de configuraçaõ tambem usa localhost.
Tambem pensei nisso Tiago, mas modifiquei os arquivos para nao usarem md5, e gravar a senha pura, e mesmo assim deu login/senha invalidos.
vixi..
acho q deve estar acontecendo um conflito de codigos...
tenta simplificar o codigo de acesso ao bd...
desse jeito ai você acaba se perdendo..
mas tirou o md5 tambem pro login?
case 'login':
$usuario = ValidarCampo($_POST['login'],'login',4,16);
$senha = ValidarCampo($_POST['senha'],'senha',4,16);
// $senha = $_POST['senha'];
[b]$senha = md5($senha);[/b]
// $tipo = $_POST['acesso'];
// $id = $_POST['id'];
break;>
mas tirou o md5 tambem pro login?
case 'login':
$usuario = ValidarCampo($_POST['login'],'login',4,16);
$senha = ValidarCampo($_POST['senha'],'senha',4,16);
// $senha = $_POST['senha'];
[b]$senha = md5($senha);[/b]
// $tipo = $_POST['acesso'];
// $id = $_POST['id'];
break;
Sim tirei.
Cara, estou achando ainda que e algo com o MySQL, não vejo outra opção.
É um wordpress que você está instalando no servidor de hospedagem?
Instale o wordpress pelo navegador, depois você envia os arquivos que você alterou.
Bom dia Andre,
não e wordpress, ele eu ja tenho instalado, só usei o exemplo do wordpress pra mostrar que a configuração do DB quanto a localização no host e mesmo localhost.
O que estou instalando e um script de login e cadastro de usuarios que funciona perfeitamente na minha maquina local mas no host eu consigo cadastrar mas da erro ao tentar logar(usuario ou senha invalidos).
Crie uma página avulsa e faça um select em algum usuário so para exibir na tela algum registro do banco de dados, caso exiba algum registro nesta página, significa que você está se conectando com o banco de dados normalmente, e o problema está na códificação de seus arquivos e não na conexão com o servidor. Pode ser algo relativo há output_buffering
Se você conseguir se conecta ao banco de dados e não apresentar nenhum erro, abra a página de login onde você recebe os valores do form e insira um:
ini_set('error_reporting', E_ALL);
ini_set('display_erros', yes);
Se der algum erro poste aqui novamente.
:thumbsup:
Pessoal, muito obrigado pela ajuda, mas resolvi o problema reavaliando o codigo, e percebi que estava usando a mesma variavel com nomes diferentes :o . Usei a variavel login e no case abaixo deixei como usuario.
case 'cadastro':
$nome = ValidarCampo($_POST['nome'],'nome',4,32);
$email = ValidarCampo($_POST['email'],'email',6,64);
case 'login':
$usuario = ValidarCampo($_POST['login'],'login',4,16);
$senha = ValidarCampo($_POST['senha'],'senha',4,16);
// $senha = $_POST['senha'];
$senha = md5($senha);
// $tipo = $_POST['acesso'];
// $id = $_POST['id'];
break;
}
// Tenta conectar com o MySQL
if(ConectaMySQL()){
// Processo de login
if($acao=='login'){
if(ChecaUsuario($login)){
$query = mysql_query("SELECT * FROM inscricao WHERE login='".$login."' and senha='".$senha."';") or Data('2');
if(mysql_num_rows($query)>0){
$linha = mysql_fetch_row($query);
setcookie('SmartLoginCookie1',md5('EstouLogado'),time()+3600*24,'/');
setcookie('SmartLoginCookie2',base64_encode($linha['1']),time()+3600*24,'/');
setcookie('SmartLoginCookie3',base64_encode($linha['5']),time()+3600*24,'/');
setcookie('SmartLoginCookie4',base64_encode($linha['3']),time()+3600*24,'/');
setcookie('SmartLoginCookie5',base64_encode($linha['0']),time()+3600*24,'/');
$data='4';
}else{$data='3';}
}else{$data='3';}
}
Desculpem pelo incomodo mas faco questao de deixar isso aqui como exemplo.
Sempre leia o codigo varias vezes e quando pensar que ja sabe ele completamente leia novamente, so pra nao restar duvidas.
Muito obrigado a todos.
Posta o script de conexão aí manolo.